Merge branch 'main' into avm99963-monorail
Merged commit cd4b3b336f1f14afa02990fdc2eec5d9467a827e
GitOrigin-RevId: e67bbf185d5538e1472bb42e0abb2a141f88bac1
diff --git a/.coveragerc b/.coveragerc
index 484c1b9..19cba22 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -2,7 +2,6 @@
include = appengine/monorail/*
omit =
# Add monorail's third-party packages and worst offenders
- ./appengine/monorail/third_party/*
./appengine/monorail/lib/*
./appengine/monorail/testing/*
./appengine/monorail/**/test/*
diff --git a/.expect_tests.cfg b/.expect_tests.cfg
index bcf0e2a..068cf0a 100644
--- a/.expect_tests.cfg
+++ b/.expect_tests.cfg
@@ -2,4 +2,3 @@
skip=
components
gae_ts_mon
- third_party
diff --git a/.gitignore b/.gitignore
index 8777c86..4c40427 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
.*\.swp
.*\#.*
.*@.*
+._gae_py*
.nyc_output
REVISION
.coverage
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..1fbb7cf
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+registry = 'https://npm.skia.org/chops-monorail'
diff --git a/.vpython3 b/.vpython3
new file mode 100644
index 0000000..909a560
--- /dev/null
+++ b/.vpython3
@@ -0,0 +1,306 @@
+# This is a vpython "spec" file.
+#
+# Read more about `vpython` and how to modify this file here:
+# https://chromium.googlesource.com/infra/infra/+/main/doc/users/vpython.md
+# List of available wheels:
+# https://chromium.googlesource.com/infra/infra/+/main/infra/tools/dockerbuild/wheels.md
+
+python_version: "3.8"
+
+wheel: <
+ name: "infra/python/wheels/appengine-python-standard-py3"
+ version: "version:0.3.1"
+>
+
+wheel: <
+ name: "infra/python/wheels/flask-py2_py3"
+ version: "version:1.0.2"
+>
+
+wheel: <
+ name: "infra/python/wheels/google-api-python-client-py3"
+ version: "version:2.2.0"
+>
+
+wheel: <
+ name: "infra/python/wheels/google-auth-py2_py3"
+ version: "version:1.35.0"
+>
+
+wheel: <
+ name: "infra/python/wheels/google-cloud-logging-py3"
+ version: "version:3.0.0"
+>
+
+wheel: <
+ name: "infra/python/wheels/google-cloud-storage-py2_py3"
+ version: "version:1.41.1"
+>
+
+wheel: <
+ name: "infra/python/wheels/httplib2-py3"
+ version: "version:0.19.1"
+>
+
+wheel: <
+ name: "infra/python/wheels/oauth2client-py2_py3"
+ version: "version:4.1.3"
+>
+
+wheel: <
+ name: "infra/python/wheels/six-py2_py3"
+ version: "version:1.15.0"
+>
+
+# Required for testing only.
+wheel: <
+ name: "infra/python/wheels/pytest-py3"
+ version: "version:6.2.2"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/attrs-py2_py3"
+ version: "version:21.4.0"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/frozendict-py3"
+ version: "version:2.0.6"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/mock-py3"
+ version: "version:4.0.3"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/pillow/${vpython_platform}"
+ version: "version:8.3.1"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/protobuf-py3"
+ version: "version:3.19.3"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/pytz-py2_py3"
+ version: "version:2021.1"
+>
+
+# Required by appengine-python-standard==0.3.1
+wheel: <
+ name: "infra/python/wheels/ruamel_yaml-py3"
+ version: "version:0.17.16"
+>
+
+# Required by Flask==1.0.2
+wheel: <
+ name: "infra/python/wheels/click-py2_py3"
+ version: "version:7.0"
+>
+
+# Required by Flask==1.0.2
+wheel: <
+ name: "infra/python/wheels/itsdangerous-py2_py3"
+ version: "version:1.1.0"
+>
+
+# Required by Flask==1.0.2
+wheel: <
+ name: "infra/python/wheels/jinja2-py2_py3"
+ version: "version:2.10.1"
+>
+
+# Required by Flask==1.0.2
+wheel: <
+ name: "infra/python/wheels/werkzeug-py2_py3"
+ version: "version:1.0.1"
+>
+
+# Required by google-api-python-client==2.2.0 and
+# google-cloud-core==2.2.2 and google-cloud-logging==3.0.0
+wheel: <
+ name: "infra/python/wheels/google-api-core-py3"
+ version: "version:1.31.5"
+>
+
+# Required by google-api-python-client==2.2.0
+wheel: <
+ name: "infra/python/wheels/google-auth-py2_py3"
+ version: "version:1.35.0"
+>
+
+# Required by google-api-python-client==2.2.0
+wheel: <
+ name: "infra/python/wheels/google-auth-httplib2-py2_py3"
+ version: "version:0.1.0"
+>
+
+# Required by google-api-python-client==2.2.0
+wheel: <
+ name: "infra/python/wheels/uritemplate-py2_py3"
+ version: "version:3.0.0"
+>
+
+# Required by google-api-core==1.25.1
+wheel: <
+ name: "infra/python/wheels/googleapis-common-protos-py2_py3"
+ version: "version:1.52.0"
+>
+
+# Required by google-api-core==1.25.1
+wheel: <
+ name: "infra/python/wheels/requests-py2_py3"
+ version: "version:2.25.1"
+>
+
+# Required by google-auth==1.29.0
+wheel: <
+ name: "infra/python/wheels/cachetools-py3"
+ version: "version:4.2.1"
+>
+
+# Required by google-auth==1.29.0
+wheel: <
+ name: "infra/python/wheels/pyasn1_modules-py2_py3"
+ version: "version:0.2.8"
+>
+
+# Required by google-auth==1.29.0
+wheel: <
+ name: "infra/python/wheels/rsa-py3"
+ version: "version:4.7.2"
+>
+
+# Required by google-cloud-logging==3.0.0
+wheel: <
+ name: "infra/python/wheels/google-cloud-appengine-logging-py2_py3"
+ version: "version:1.1.1"
+>
+
+# Required by google-cloud-logging==3.0.0
+wheel: <
+ name: "infra/python/wheels/google-cloud-audit-log-py2_py3"
+ version: "version:0.2.0"
+>
+
+# Required by google-cloud-logging==3.0.0
+wheel: <
+ name: "infra/python/wheels/grpc-google-iam-v1-py3"
+ version: "version:0.12.3"
+>
+
+# Required by google-cloud-logging==3.0.0
+wheel: <
+ name: "infra/python/wheels/proto-plus-py3"
+ version: "version:1.20.3"
+>
+
+# Required by google-cloud-storage==1.41.1
+wheel: <
+ name: "infra/python/wheels/google-resumable-media-py3"
+ version: "version:2.2.1"
+>
+
+# Required by google-cloud-storage==1.41.1
+wheel: <
+ name: "infra/python/wheels/google-cloud-core-py3"
+ version: "version:2.2.2"
+>
+
+# Required by google-cloud-storage==1.41.1
+wheel: <
+ name: "infra/python/wheels/google-crc32c/${vpython_platform}"
+ version: "version:1.3.0"
+>
+
+# Required by grpc-google-iam-v1==0.12.3
+wheel: <
+ name: "infra/python/wheels/grpcio/${vpython_platform}"
+ version: "version:1.44.0"
+>
+
+# Required by httplib2==0.19.1
+wheel: <
+ name: "infra/python/wheels/pyparsing-py2_py3"
+ version: "version:2.4.7"
+>
+
+# Required by Jinja2==2.10.1
+wheel: <
+ name: "infra/python/wheels/markupsafe/${vpython_platform}"
+ version: "version:1.1.1"
+>
+
+# Required by oauth2client==4.1.3
+wheel: <
+ name: "infra/python/wheels/pyasn1-py2_py3"
+ version: "version:0.4.8"
+>
+
+# Required by pytest==6.2.2
+wheel: <
+ name: "infra/python/wheels/iniconfig-py3"
+ version: "version:1.1.1"
+>
+
+# Required by pytest==6.2.2
+wheel: <
+ name: "infra/python/wheels/packaging-py2_py3"
+ version: "version:16.8"
+>
+
+# Required by pytest==6.2.2
+wheel: <
+ name: "infra/python/wheels/pluggy-py3"
+ version: "version:0.13.1"
+>
+
+# Required by pytest==6.2.2
+wheel: <
+ name: "infra/python/wheels/py-py2_py3"
+ version: "version:1.10.0"
+>
+
+# Required by pytest==6.2.2
+wheel: <
+ name: "infra/python/wheels/toml-py3"
+ version: "version:0.10.1"
+>
+
+# Required by requests==2.25.1
+wheel: <
+ name: "infra/python/wheels/certifi-py2_py3"
+ version: "version:2020.12.5"
+>
+
+# Required by requests==2.25.1
+wheel: <
+ name: "infra/python/wheels/chardet-py2_py3"
+ version: "version:4.0.0"
+>
+
+# Required by requests==2.25.1
+wheel: <
+ name: "infra/python/wheels/idna-py2_py3"
+ version: "version:2.8"
+>
+
+# Required by requests==2.25.1
+wheel: <
+ name: "infra/python/wheels/urllib3-py2_py3"
+ version: "version:1.26.4"
+>
+
+# Required by ruamel.yaml==0.17.16
+wheel: <
+ name: "infra/python/wheels/ruamel_yaml_clib/${vpython_platform}"
+ version: "version:0.2.6"
+>
diff --git a/Makefile b/Makefile
index 57cf679..ac8c92a 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@
PRODID= avm99963-bugs
GAE_PY?= python gae.py
-DEV_APPSERVER_FLAGS?= --watcher_ignore_re="(.*/lib|.*/node_modules|.*/third_party|.*/venv)"
+DEV_APPSERVER_FLAGS?= --watcher_ignore_re="(.*/lib|.*/node_modules|.*/venv)"
WEBPACK_PATH := ./node_modules/webpack-cli/bin/cli.js
@@ -27,7 +27,6 @@
_VERSION ?= $(shell ../../../infra/luci/appengine/components/tools/calculate_version.py)
RUN_CLOUD_TASKS := ../../cipd/cloud-tasks-emulator \
- --queue projects/monorail-staging/locations/us-central1/queues/componentexport \
--queue projects/monorail-staging/locations/us-central1/queues/default \
--queue projects/monorail-staging/locations/us-central1/queues/notifications \
--queue projects/monorail-staging/locations/us-central1/queues/outboundemail \
@@ -56,7 +55,7 @@
touch ../../ENV/lib/python2.7/site-packages/google/__init__.py
PYTHONPATH=../../ENV/lib/python2.7/site-packages \
PATH=../../luci/appengine/components/tools:$(PATH) \
- ../../cipd/protoc \
+ ../../cipd/bin/protoc \
--python_out=. --prpc-python_out=. api/api_proto/*.proto
cd ../../go/src/infra/monorailv2 && \
cproto -proto-path ../../../../appengine/monorail/ ../../../../appengine/monorail/api/api_proto/
@@ -98,7 +97,7 @@
# to impersonate monorail-staging in the local environment.
serve:
@echo "---[Starting SDK AppEngine Server]---"
- $(GAE_PY) devserver -A monorail-staging -- $(DEV_APPSERVER_FLAGS)\
+ $(GAE_PY) devserver -A monorail-staging -- $(DEV_APPSERVER_FLAGS) 2>&1 | grep -a -v 'AccessTokenRefreshError' | grep -a -v 'csp.do' \
& $(WEBPACK_PATH) --watch\
& $(RUN_CLOUD_TASKS)
@@ -139,6 +138,10 @@
dev_deps:
python -m pip install --no-deps -r requirements.dev.txt
+generate_requirements_txt:
+ vpython3 -m pip freeze > requirements.txt
+ printf "# This file is generated from the .vpython3 spec file.\n# Use \`make generate_requirements_txt\` to update.\n$$(cat requirements.txt)" > requirements.txt
+
karma:
npx karma start --debug --coverage
diff --git a/api/api_proto/common.proto b/api/api_proto/common.proto
index 0ff0750..9d51732 100644
--- a/api/api_proto/common.proto
+++ b/api/api_proto/common.proto
@@ -14,6 +14,7 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
// Next available tag: 3
message ComponentRef {
diff --git a/api/api_proto/common_pb2.py b/api/api_proto/common_pb2.py
index 1d31b51..7d22545 100644
--- a/api/api_proto/common_pb2.py
+++ b/api/api_proto/common_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/common.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
@@ -19,8 +18,9 @@
name='api/api_proto/common.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x1a\x61pi/api_proto/common.proto\x12\x08monorail\"0\n\x0c\x43omponentRef\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x12\n\nis_derived\x18\x02 \x01(\x08\"j\n\x08\x46ieldRef\x12\x10\n\x08\x66ield_id\x18\x01 \x01(\x04\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12!\n\x04type\x18\x03 \x01(\x0e\x32\x13.monorail.FieldType\x12\x15\n\rapproval_name\x18\x04 \x01(\t\"-\n\x08LabelRef\x12\r\n\x05label\x18\x01 \x01(\t\x12\x12\n\nis_derived\x18\x02 \x01(\x08\"C\n\tStatusRef\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nmeans_open\x18\x02 \x01(\x08\x12\x12\n\nis_derived\x18\x03 \x01(\x08\"J\n\x08IssueRef\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x16\n\x0e\x65xt_identifier\x18\x03 \x01(\t\"D\n\x07UserRef\x12\x0f\n\x07user_id\x18\x01 \x01(\x04\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x12\n\nis_derived\x18\x03 \x01(\x08\"P\n\nHotlistRef\x12\x12\n\nhotlist_id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12 \n\x05owner\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\")\n\x0bValueAndWhy\x12\r\n\x05value\x18\x01 \x01(\t\x12\x0b\n\x03why\x18\x02 \x01(\t\".\n\nPagination\x12\x11\n\tmax_items\x18\x01 \x01(\r\x12\r\n\x05start\x18\x02 \x01(\r\"R\n\nSavedQuery\x12\x10\n\x08query_id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05query\x18\x03 \x01(\t\x12\x15\n\rproject_names\x18\x04 \x03(\t*\x91\x01\n\tFieldType\x12\x0b\n\x07NO_TYPE\x10\x00\x12\r\n\tENUM_TYPE\x10\x01\x12\x0c\n\x08INT_TYPE\x10\x02\x12\x0c\n\x08STR_TYPE\x10\x03\x12\r\n\tUSER_TYPE\x10\x04\x12\r\n\tDATE_TYPE\x10\x05\x12\r\n\tBOOL_TYPE\x10\x06\x12\x0c\n\x08URL_TYPE\x10\x07\x12\x11\n\rAPPROVAL_TYPE\x10\x08\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x1a\x61pi/api_proto/common.proto\x12\x08monorail\"0\n\x0c\x43omponentRef\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x12\n\nis_derived\x18\x02 \x01(\x08\"j\n\x08\x46ieldRef\x12\x10\n\x08\x66ield_id\x18\x01 \x01(\x04\x12\x12\n\nfield_name\x18\x02 \x01(\t\x12!\n\x04type\x18\x03 \x01(\x0e\x32\x13.monorail.FieldType\x12\x15\n\rapproval_name\x18\x04 \x01(\t\"-\n\x08LabelRef\x12\r\n\x05label\x18\x01 \x01(\t\x12\x12\n\nis_derived\x18\x02 \x01(\x08\"C\n\tStatusRef\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nmeans_open\x18\x02 \x01(\x08\x12\x12\n\nis_derived\x18\x03 \x01(\x08\"J\n\x08IssueRef\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x16\n\x0e\x65xt_identifier\x18\x03 \x01(\t\"D\n\x07UserRef\x12\x0f\n\x07user_id\x18\x01 \x01(\x04\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x12\n\nis_derived\x18\x03 \x01(\x08\"P\n\nHotlistRef\x12\x12\n\nhotlist_id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12 \n\x05owner\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\")\n\x0bValueAndWhy\x12\r\n\x05value\x18\x01 \x01(\t\x12\x0b\n\x03why\x18\x02 \x01(\t\".\n\nPagination\x12\x11\n\tmax_items\x18\x01 \x01(\r\x12\r\n\x05start\x18\x02 \x01(\r\"R\n\nSavedQuery\x12\x10\n\x08query_id\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05query\x18\x03 \x01(\t\x12\x15\n\rproject_names\x18\x04 \x03(\t*\x91\x01\n\tFieldType\x12\x0b\n\x07NO_TYPE\x10\x00\x12\r\n\tENUM_TYPE\x10\x01\x12\x0c\n\x08INT_TYPE\x10\x02\x12\x0c\n\x08STR_TYPE\x10\x03\x12\r\n\tUSER_TYPE\x10\x04\x12\r\n\tDATE_TYPE\x10\x05\x12\r\n\tBOOL_TYPE\x10\x06\x12\x0c\n\x08URL_TYPE\x10\x07\x12\x11\n\rAPPROVAL_TYPE\x10\x08\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
)
_FIELDTYPE = _descriptor.EnumDescriptor(
@@ -28,43 +28,53 @@
full_name='monorail.FieldType',
filename=None,
file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='NO_TYPE', index=0, number=0,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='ENUM_TYPE', index=1, number=1,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='INT_TYPE', index=2, number=2,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='STR_TYPE', index=3, number=3,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='USER_TYPE', index=4, number=4,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='DATE_TYPE', index=5, number=5,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='BOOL_TYPE', index=6, number=6,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='URL_TYPE', index=7, number=7,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='APPROVAL_TYPE', index=8, number=8,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
@@ -92,21 +102,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='path', full_name='monorail.ComponentRef.path', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_derived', full_name='monorail.ComponentRef.is_derived', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -130,6 +141,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_id', full_name='monorail.FieldRef.field_id', index=0,
@@ -137,28 +149,28 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_name', full_name='monorail.FieldRef.field_name', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='type', full_name='monorail.FieldRef.type', index=2,
number=3, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_name', full_name='monorail.FieldRef.approval_name', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -182,21 +194,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='label', full_name='monorail.LabelRef.label', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_derived', full_name='monorail.LabelRef.is_derived', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -220,28 +233,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='status', full_name='monorail.StatusRef.status', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='means_open', full_name='monorail.StatusRef.means_open', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_derived', full_name='monorail.StatusRef.is_derived', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -265,28 +279,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.IssueRef.project_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='local_id', full_name='monorail.IssueRef.local_id', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ext_identifier', full_name='monorail.IssueRef.ext_identifier', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -310,6 +325,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_id', full_name='monorail.UserRef.user_id', index=0,
@@ -317,21 +333,21 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='display_name', full_name='monorail.UserRef.display_name', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_derived', full_name='monorail.UserRef.is_derived', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -355,6 +371,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_id', full_name='monorail.HotlistRef.hotlist_id', index=0,
@@ -362,21 +379,21 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='name', full_name='monorail.HotlistRef.name', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner', full_name='monorail.HotlistRef.owner', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -400,21 +417,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='value', full_name='monorail.ValueAndWhy.value', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='why', full_name='monorail.ValueAndWhy.why', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -438,6 +456,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='max_items', full_name='monorail.Pagination.max_items', index=0,
@@ -445,14 +464,14 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='start', full_name='monorail.Pagination.start', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -476,6 +495,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='query_id', full_name='monorail.SavedQuery.query_id', index=0,
@@ -483,28 +503,28 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='name', full_name='monorail.SavedQuery.name', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='query', full_name='monorail.SavedQuery.query', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='project_names', full_name='monorail.SavedQuery.project_names', index=3,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -536,75 +556,76 @@
DESCRIPTOR.enum_types_by_name['FieldType'] = _FIELDTYPE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-ComponentRef = _reflection.GeneratedProtocolMessageType('ComponentRef', (_message.Message,), dict(
- DESCRIPTOR = _COMPONENTREF,
- __module__ = 'api.api_proto.common_pb2'
+ComponentRef = _reflection.GeneratedProtocolMessageType('ComponentRef', (_message.Message,), {
+ 'DESCRIPTOR' : _COMPONENTREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.ComponentRef)
- ))
+ })
_sym_db.RegisterMessage(ComponentRef)
-FieldRef = _reflection.GeneratedProtocolMessageType('FieldRef', (_message.Message,), dict(
- DESCRIPTOR = _FIELDREF,
- __module__ = 'api.api_proto.common_pb2'
+FieldRef = _reflection.GeneratedProtocolMessageType('FieldRef', (_message.Message,), {
+ 'DESCRIPTOR' : _FIELDREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.FieldRef)
- ))
+ })
_sym_db.RegisterMessage(FieldRef)
-LabelRef = _reflection.GeneratedProtocolMessageType('LabelRef', (_message.Message,), dict(
- DESCRIPTOR = _LABELREF,
- __module__ = 'api.api_proto.common_pb2'
+LabelRef = _reflection.GeneratedProtocolMessageType('LabelRef', (_message.Message,), {
+ 'DESCRIPTOR' : _LABELREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.LabelRef)
- ))
+ })
_sym_db.RegisterMessage(LabelRef)
-StatusRef = _reflection.GeneratedProtocolMessageType('StatusRef', (_message.Message,), dict(
- DESCRIPTOR = _STATUSREF,
- __module__ = 'api.api_proto.common_pb2'
+StatusRef = _reflection.GeneratedProtocolMessageType('StatusRef', (_message.Message,), {
+ 'DESCRIPTOR' : _STATUSREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.StatusRef)
- ))
+ })
_sym_db.RegisterMessage(StatusRef)
-IssueRef = _reflection.GeneratedProtocolMessageType('IssueRef', (_message.Message,), dict(
- DESCRIPTOR = _ISSUEREF,
- __module__ = 'api.api_proto.common_pb2'
+IssueRef = _reflection.GeneratedProtocolMessageType('IssueRef', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUEREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueRef)
- ))
+ })
_sym_db.RegisterMessage(IssueRef)
-UserRef = _reflection.GeneratedProtocolMessageType('UserRef', (_message.Message,), dict(
- DESCRIPTOR = _USERREF,
- __module__ = 'api.api_proto.common_pb2'
+UserRef = _reflection.GeneratedProtocolMessageType('UserRef', (_message.Message,), {
+ 'DESCRIPTOR' : _USERREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.UserRef)
- ))
+ })
_sym_db.RegisterMessage(UserRef)
-HotlistRef = _reflection.GeneratedProtocolMessageType('HotlistRef', (_message.Message,), dict(
- DESCRIPTOR = _HOTLISTREF,
- __module__ = 'api.api_proto.common_pb2'
+HotlistRef = _reflection.GeneratedProtocolMessageType('HotlistRef', (_message.Message,), {
+ 'DESCRIPTOR' : _HOTLISTREF,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.HotlistRef)
- ))
+ })
_sym_db.RegisterMessage(HotlistRef)
-ValueAndWhy = _reflection.GeneratedProtocolMessageType('ValueAndWhy', (_message.Message,), dict(
- DESCRIPTOR = _VALUEANDWHY,
- __module__ = 'api.api_proto.common_pb2'
+ValueAndWhy = _reflection.GeneratedProtocolMessageType('ValueAndWhy', (_message.Message,), {
+ 'DESCRIPTOR' : _VALUEANDWHY,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.ValueAndWhy)
- ))
+ })
_sym_db.RegisterMessage(ValueAndWhy)
-Pagination = _reflection.GeneratedProtocolMessageType('Pagination', (_message.Message,), dict(
- DESCRIPTOR = _PAGINATION,
- __module__ = 'api.api_proto.common_pb2'
+Pagination = _reflection.GeneratedProtocolMessageType('Pagination', (_message.Message,), {
+ 'DESCRIPTOR' : _PAGINATION,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.Pagination)
- ))
+ })
_sym_db.RegisterMessage(Pagination)
-SavedQuery = _reflection.GeneratedProtocolMessageType('SavedQuery', (_message.Message,), dict(
- DESCRIPTOR = _SAVEDQUERY,
- __module__ = 'api.api_proto.common_pb2'
+SavedQuery = _reflection.GeneratedProtocolMessageType('SavedQuery', (_message.Message,), {
+ 'DESCRIPTOR' : _SAVEDQUERY,
+ '__module__' : 'api.api_proto.common_pb2'
# @@protoc_insertion_point(class_scope:monorail.SavedQuery)
- ))
+ })
_sym_db.RegisterMessage(SavedQuery)
+DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/api/api_proto/features.proto b/api/api_proto/features.proto
index 7d7f2fc..4b79df9 100644
--- a/api/api_proto/features.proto
+++ b/api/api_proto/features.proto
@@ -7,6 +7,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "api/api_proto/common.proto";
import "api/api_proto/features_objects.proto";
@@ -27,7 +29,6 @@
rpc RerankHotlistIssues (RerankHotlistIssuesRequest) returns (RerankHotlistIssuesResponse) {}
rpc UpdateHotlistIssueNote (UpdateHotlistIssueNoteRequest) returns (UpdateHotlistIssueNoteResponse) {}
rpc DeleteHotlist (DeleteHotlistRequest) returns (DeleteHotlistResponse) {}
- rpc PredictComponent (PredictComponentRequest) returns (PredictComponentResponse) {}
}
@@ -214,16 +215,3 @@
// Next available tag: 1
message DeleteHotlistResponse {
}
-
-
-// Next available tag: 4
-message PredictComponentRequest {
- string text = 2;
- string project_name = 3;
-}
-
-
-// Next available tag: 2
-message PredictComponentResponse {
- ComponentRef component_ref = 1;
-}
diff --git a/api/api_proto/features_objects.proto b/api/api_proto/features_objects.proto
index 14b61ac..aa5a36c 100644
--- a/api/api_proto/features_objects.proto
+++ b/api/api_proto/features_objects.proto
@@ -7,6 +7,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "api/api_proto/common.proto";
import "api/api_proto/issue_objects.proto";
diff --git a/api/api_proto/features_objects_pb2.py b/api/api_proto/features_objects_pb2.py
index 63d8091..d473846 100644
--- a/api/api_proto/features_objects_pb2.py
+++ b/api/api_proto/features_objects_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/features_objects.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
name='api/api_proto/features_objects.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n$api/api_proto/features_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\"\xe3\x01\n\x07Hotlist\x12$\n\towner_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\rfollower_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x18\n\x10\x64\x65\x66\x61ult_col_spec\x18\x07 \x01(\t\x12\x12\n\nis_private\x18\x08 \x01(\x08\"\x88\x01\n\x0bHotlistItem\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\x12\x0c\n\x04rank\x18\x02 \x01(\r\x12$\n\tadder_ref\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\x12\x17\n\x0f\x61\x64\x64\x65\x64_timestamp\x18\x04 \x01(\r\x12\x0c\n\x04note\x18\x05 \x01(\t\"\xc5\x01\n\x12HotlistPeopleDelta\x12(\n\rnew_owner_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12*\n\x0f\x61\x64\x64_editor_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12,\n\x11\x61\x64\x64_follower_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12+\n\x10remove_user_refs\x18\x04 \x03(\x0b\x32\x11.monorail.UserRefb\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n$api/api_proto/features_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\"\xe3\x01\n\x07Hotlist\x12$\n\towner_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\rfollower_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x18\n\x10\x64\x65\x66\x61ult_col_spec\x18\x07 \x01(\t\x12\x12\n\nis_private\x18\x08 \x01(\x08\"\x88\x01\n\x0bHotlistItem\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\x12\x0c\n\x04rank\x18\x02 \x01(\r\x12$\n\tadder_ref\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\x12\x17\n\x0f\x61\x64\x64\x65\x64_timestamp\x18\x04 \x01(\r\x12\x0c\n\x04note\x18\x05 \x01(\t\"\xc5\x01\n\x12HotlistPeopleDelta\x12(\n\rnew_owner_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12*\n\x0f\x61\x64\x64_editor_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12,\n\x11\x61\x64\x64_follower_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12+\n\x10remove_user_refs\x18\x04 \x03(\x0b\x32\x11.monorail.UserRefB)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_issue__objects__pb2.DESCRIPTOR,])
@@ -34,6 +34,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='owner_ref', full_name='monorail.Hotlist.owner_ref', index=0,
@@ -41,56 +42,56 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='editor_refs', full_name='monorail.Hotlist.editor_refs', index=1,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='follower_refs', full_name='monorail.Hotlist.follower_refs', index=2,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='name', full_name='monorail.Hotlist.name', index=3,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.Hotlist.summary', index=4,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='description', full_name='monorail.Hotlist.description', index=5,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_col_spec', full_name='monorail.Hotlist.default_col_spec', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_private', full_name='monorail.Hotlist.is_private', index=7,
number=8, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -114,6 +115,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue', full_name='monorail.HotlistItem.issue', index=0,
@@ -121,35 +123,35 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='rank', full_name='monorail.HotlistItem.rank', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='adder_ref', full_name='monorail.HotlistItem.adder_ref', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='added_timestamp', full_name='monorail.HotlistItem.added_timestamp', index=3,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='note', full_name='monorail.HotlistItem.note', index=4,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -173,6 +175,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='new_owner_ref', full_name='monorail.HotlistPeopleDelta.new_owner_ref', index=0,
@@ -180,28 +183,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='add_editor_refs', full_name='monorail.HotlistPeopleDelta.add_editor_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='add_follower_refs', full_name='monorail.HotlistPeopleDelta.add_follower_refs', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='remove_user_refs', full_name='monorail.HotlistPeopleDelta.remove_user_refs', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -232,26 +235,27 @@
DESCRIPTOR.message_types_by_name['HotlistPeopleDelta'] = _HOTLISTPEOPLEDELTA
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-Hotlist = _reflection.GeneratedProtocolMessageType('Hotlist', (_message.Message,), dict(
- DESCRIPTOR = _HOTLIST,
- __module__ = 'api.api_proto.features_objects_pb2'
+Hotlist = _reflection.GeneratedProtocolMessageType('Hotlist', (_message.Message,), {
+ 'DESCRIPTOR' : _HOTLIST,
+ '__module__' : 'api.api_proto.features_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Hotlist)
- ))
+ })
_sym_db.RegisterMessage(Hotlist)
-HotlistItem = _reflection.GeneratedProtocolMessageType('HotlistItem', (_message.Message,), dict(
- DESCRIPTOR = _HOTLISTITEM,
- __module__ = 'api.api_proto.features_objects_pb2'
+HotlistItem = _reflection.GeneratedProtocolMessageType('HotlistItem', (_message.Message,), {
+ 'DESCRIPTOR' : _HOTLISTITEM,
+ '__module__' : 'api.api_proto.features_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.HotlistItem)
- ))
+ })
_sym_db.RegisterMessage(HotlistItem)
-HotlistPeopleDelta = _reflection.GeneratedProtocolMessageType('HotlistPeopleDelta', (_message.Message,), dict(
- DESCRIPTOR = _HOTLISTPEOPLEDELTA,
- __module__ = 'api.api_proto.features_objects_pb2'
+HotlistPeopleDelta = _reflection.GeneratedProtocolMessageType('HotlistPeopleDelta', (_message.Message,), {
+ 'DESCRIPTOR' : _HOTLISTPEOPLEDELTA,
+ '__module__' : 'api.api_proto.features_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.HotlistPeopleDelta)
- ))
+ })
_sym_db.RegisterMessage(HotlistPeopleDelta)
+DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/api/api_proto/features_pb2.py b/api/api_proto/features_pb2.py
index c415a35..bfb954f 100644
--- a/api/api_proto/features_pb2.py
+++ b/api/api_proto/features_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/features.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
name='api/api_proto/features.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x1c\x61pi/api_proto/features.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a$api/api_proto/features_objects.proto\"<\n\x19ListHotlistsByUserRequest\x12\x1f\n\x04user\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"A\n\x1aListHotlistsByUserResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"?\n\x1aListHotlistsByIssueRequest\x12!\n\x05issue\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"B\n\x1bListHotlistsByIssueResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"$\n\"ListRecentlyVisitedHotlistsRequest\"J\n#ListRecentlyVisitedHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"\x1c\n\x1aListStarredHotlistsRequest\"B\n\x1bListStarredHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"G\n\x1aGetHotlistStarCountRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\"1\n\x1bGetHotlistStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"P\n\x12StarHotlistRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarHotlistResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x11GetHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"8\n\x12GetHotlistResponse\x12\"\n\x07hotlist\x18\x01 \x01(\x0b\x32\x11.monorail.Hotlist\"\xa5\x01\n\x17ListHotlistItemsRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12(\n\npagination\x18\x03 \x01(\x0b\x32\x14.monorail.Pagination\x12\x0b\n\x03\x63\x61n\x18\x04 \x01(\r\x12\x11\n\tsort_spec\x18\x05 \x01(\t\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\"@\n\x18ListHotlistItemsResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.monorail.HotlistItem\"\xae\x01\n\x14\x43reateHotlistRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nissue_refs\x18\x06 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nis_private\x18\x07 \x01(\x08\"\x17\n\x15\x43reateHotlistResponse\"\'\n\x17\x43heckHotlistNameRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\")\n\x18\x43heckHotlistNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"u\n\x1fRemoveIssuesFromHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\"\"\n RemoveIssuesFromHotlistsResponse\"~\n\x1a\x41\x64\x64IssuesToHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\"\x1d\n\x1b\x41\x64\x64IssuesToHotlistsResponse\"\xac\x01\n\x1aRerankHotlistIssuesRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nmoved_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x04 \x01(\x08\"\x1d\n\x1bRerankHotlistIssuesResponse\"\x7f\n\x1dUpdateHotlistIssueNoteRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12%\n\tissue_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\" \n\x1eUpdateHotlistIssueNoteResponse\"A\n\x14\x44\x65leteHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"\x17\n\x15\x44\x65leteHotlistResponse\"=\n\x17PredictComponentRequest\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x14\n\x0cproject_name\x18\x03 \x01(\t\"I\n\x18PredictComponentResponse\x12-\n\rcomponent_ref\x18\x01 \x01(\x0b\x32\x16.monorail.ComponentRef2\xa5\x0c\n\x08\x46\x65\x61tures\x12\x61\n\x12ListHotlistsByUser\x12#.monorail.ListHotlistsByUserRequest\x1a$.monorail.ListHotlistsByUserResponse\"\x00\x12\x64\n\x13ListHotlistsByIssue\x12$.monorail.ListHotlistsByIssueRequest\x1a%.monorail.ListHotlistsByIssueResponse\"\x00\x12|\n\x1bListRecentlyVisitedHotlists\x12,.monorail.ListRecentlyVisitedHotlistsRequest\x1a-.monorail.ListRecentlyVisitedHotlistsResponse\"\x00\x12\x64\n\x13ListStarredHotlists\x12$.monorail.ListStarredHotlistsRequest\x1a%.monorail.ListStarredHotlistsResponse\"\x00\x12\x64\n\x13GetHotlistStarCount\x12$.monorail.GetHotlistStarCountRequest\x1a%.monorail.GetHotlistStarCountResponse\"\x00\x12L\n\x0bStarHotlist\x12\x1c.monorail.StarHotlistRequest\x1a\x1d.monorail.StarHotlistResponse\"\x00\x12I\n\nGetHotlist\x12\x1b.monorail.GetHotlistRequest\x1a\x1c.monorail.GetHotlistResponse\"\x00\x12[\n\x10ListHotlistItems\x12!.monorail.ListHotlistItemsRequest\x1a\".monorail.ListHotlistItemsResponse\"\x00\x12R\n\rCreateHotlist\x12\x1e.monorail.CreateHotlistRequest\x1a\x1f.monorail.CreateHotlistResponse\"\x00\x12[\n\x10\x43heckHotlistName\x12!.monorail.CheckHotlistNameRequest\x1a\".monorail.CheckHotlistNameResponse\"\x00\x12s\n\x18RemoveIssuesFromHotlists\x12).monorail.RemoveIssuesFromHotlistsRequest\x1a*.monorail.RemoveIssuesFromHotlistsResponse\"\x00\x12\x64\n\x13\x41\x64\x64IssuesToHotlists\x12$.monorail.AddIssuesToHotlistsRequest\x1a%.monorail.AddIssuesToHotlistsResponse\"\x00\x12\x64\n\x13RerankHotlistIssues\x12$.monorail.RerankHotlistIssuesRequest\x1a%.monorail.RerankHotlistIssuesResponse\"\x00\x12m\n\x16UpdateHotlistIssueNote\x12\'.monorail.UpdateHotlistIssueNoteRequest\x1a(.monorail.UpdateHotlistIssueNoteResponse\"\x00\x12R\n\rDeleteHotlist\x12\x1e.monorail.DeleteHotlistRequest\x1a\x1f.monorail.DeleteHotlistResponse\"\x00\x12[\n\x10PredictComponent\x12!.monorail.PredictComponentRequest\x1a\".monorail.PredictComponentResponse\"\x00\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x1c\x61pi/api_proto/features.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a$api/api_proto/features_objects.proto\"<\n\x19ListHotlistsByUserRequest\x12\x1f\n\x04user\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"A\n\x1aListHotlistsByUserResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"?\n\x1aListHotlistsByIssueRequest\x12!\n\x05issue\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"B\n\x1bListHotlistsByIssueResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"$\n\"ListRecentlyVisitedHotlistsRequest\"J\n#ListRecentlyVisitedHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"\x1c\n\x1aListStarredHotlistsRequest\"B\n\x1bListStarredHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"G\n\x1aGetHotlistStarCountRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\"1\n\x1bGetHotlistStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"P\n\x12StarHotlistRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarHotlistResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x11GetHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"8\n\x12GetHotlistResponse\x12\"\n\x07hotlist\x18\x01 \x01(\x0b\x32\x11.monorail.Hotlist\"\xa5\x01\n\x17ListHotlistItemsRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12(\n\npagination\x18\x03 \x01(\x0b\x32\x14.monorail.Pagination\x12\x0b\n\x03\x63\x61n\x18\x04 \x01(\r\x12\x11\n\tsort_spec\x18\x05 \x01(\t\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\"@\n\x18ListHotlistItemsResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.monorail.HotlistItem\"\xae\x01\n\x14\x43reateHotlistRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nissue_refs\x18\x06 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nis_private\x18\x07 \x01(\x08\"\x17\n\x15\x43reateHotlistResponse\"\'\n\x17\x43heckHotlistNameRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\")\n\x18\x43heckHotlistNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"u\n\x1fRemoveIssuesFromHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\"\"\n RemoveIssuesFromHotlistsResponse\"~\n\x1a\x41\x64\x64IssuesToHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\"\x1d\n\x1b\x41\x64\x64IssuesToHotlistsResponse\"\xac\x01\n\x1aRerankHotlistIssuesRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nmoved_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x04 \x01(\x08\"\x1d\n\x1bRerankHotlistIssuesResponse\"\x7f\n\x1dUpdateHotlistIssueNoteRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12%\n\tissue_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\" \n\x1eUpdateHotlistIssueNoteResponse\"A\n\x14\x44\x65leteHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"\x17\n\x15\x44\x65leteHotlistResponse2\xc8\x0b\n\x08\x46\x65\x61tures\x12\x61\n\x12ListHotlistsByUser\x12#.monorail.ListHotlistsByUserRequest\x1a$.monorail.ListHotlistsByUserResponse\"\x00\x12\x64\n\x13ListHotlistsByIssue\x12$.monorail.ListHotlistsByIssueRequest\x1a%.monorail.ListHotlistsByIssueResponse\"\x00\x12|\n\x1bListRecentlyVisitedHotlists\x12,.monorail.ListRecentlyVisitedHotlistsRequest\x1a-.monorail.ListRecentlyVisitedHotlistsResponse\"\x00\x12\x64\n\x13ListStarredHotlists\x12$.monorail.ListStarredHotlistsRequest\x1a%.monorail.ListStarredHotlistsResponse\"\x00\x12\x64\n\x13GetHotlistStarCount\x12$.monorail.GetHotlistStarCountRequest\x1a%.monorail.GetHotlistStarCountResponse\"\x00\x12L\n\x0bStarHotlist\x12\x1c.monorail.StarHotlistRequest\x1a\x1d.monorail.StarHotlistResponse\"\x00\x12I\n\nGetHotlist\x12\x1b.monorail.GetHotlistRequest\x1a\x1c.monorail.GetHotlistResponse\"\x00\x12[\n\x10ListHotlistItems\x12!.monorail.ListHotlistItemsRequest\x1a\".monorail.ListHotlistItemsResponse\"\x00\x12R\n\rCreateHotlist\x12\x1e.monorail.CreateHotlistRequest\x1a\x1f.monorail.CreateHotlistResponse\"\x00\x12[\n\x10\x43heckHotlistName\x12!.monorail.CheckHotlistNameRequest\x1a\".monorail.CheckHotlistNameResponse\"\x00\x12s\n\x18RemoveIssuesFromHotlists\x12).monorail.RemoveIssuesFromHotlistsRequest\x1a*.monorail.RemoveIssuesFromHotlistsResponse\"\x00\x12\x64\n\x13\x41\x64\x64IssuesToHotlists\x12$.monorail.AddIssuesToHotlistsRequest\x1a%.monorail.AddIssuesToHotlistsResponse\"\x00\x12\x64\n\x13RerankHotlistIssues\x12$.monorail.RerankHotlistIssuesRequest\x1a%.monorail.RerankHotlistIssuesResponse\"\x00\x12m\n\x16UpdateHotlistIssueNote\x12\'.monorail.UpdateHotlistIssueNoteRequest\x1a(.monorail.UpdateHotlistIssueNoteResponse\"\x00\x12R\n\rDeleteHotlist\x12\x1e.monorail.DeleteHotlistRequest\x1a\x1f.monorail.DeleteHotlistResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_features__objects__pb2.DESCRIPTOR,])
@@ -34,6 +34,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user', full_name='monorail.ListHotlistsByUserRequest.user', index=0,
@@ -41,7 +42,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -65,6 +66,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlists', full_name='monorail.ListHotlistsByUserResponse.hotlists', index=0,
@@ -72,7 +74,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -96,6 +98,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue', full_name='monorail.ListHotlistsByIssueRequest.issue', index=0,
@@ -103,7 +106,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -127,6 +130,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlists', full_name='monorail.ListHotlistsByIssueResponse.hotlists', index=0,
@@ -134,7 +138,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -158,6 +162,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -182,6 +187,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlists', full_name='monorail.ListRecentlyVisitedHotlistsResponse.hotlists', index=0,
@@ -189,7 +195,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -213,6 +219,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -237,6 +244,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlists', full_name='monorail.ListStarredHotlistsResponse.hotlists', index=0,
@@ -244,7 +252,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -268,6 +276,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.GetHotlistStarCountRequest.hotlist_ref', index=0,
@@ -275,7 +284,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -299,6 +308,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.GetHotlistStarCountResponse.star_count', index=0,
@@ -306,7 +316,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -330,6 +340,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.StarHotlistRequest.hotlist_ref', index=0,
@@ -337,14 +348,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='starred', full_name='monorail.StarHotlistRequest.starred', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -368,6 +379,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.StarHotlistResponse.star_count', index=0,
@@ -375,7 +387,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -399,6 +411,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.GetHotlistRequest.hotlist_ref', index=0,
@@ -406,7 +419,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -430,6 +443,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist', full_name='monorail.GetHotlistResponse.hotlist', index=0,
@@ -437,7 +451,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -461,6 +475,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.ListHotlistItemsRequest.hotlist_ref', index=0,
@@ -468,35 +483,35 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pagination', full_name='monorail.ListHotlistItemsRequest.pagination', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='can', full_name='monorail.ListHotlistItemsRequest.can', index=2,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sort_spec', full_name='monorail.ListHotlistItemsRequest.sort_spec', index=3,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='group_by_spec', full_name='monorail.ListHotlistItemsRequest.group_by_spec', index=4,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -520,6 +535,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='items', full_name='monorail.ListHotlistItemsResponse.items', index=0,
@@ -527,7 +543,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -551,49 +567,50 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='monorail.CreateHotlistRequest.name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.CreateHotlistRequest.summary', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='description', full_name='monorail.CreateHotlistRequest.description', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='editor_refs', full_name='monorail.CreateHotlistRequest.editor_refs', index=3,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.CreateHotlistRequest.issue_refs', index=4,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_private', full_name='monorail.CreateHotlistRequest.is_private', index=5,
number=7, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -617,6 +634,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -641,14 +659,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='monorail.CheckHotlistNameRequest.name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -672,14 +691,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='error', full_name='monorail.CheckHotlistNameResponse.error', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -703,6 +723,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.hotlist_refs', index=0,
@@ -710,14 +731,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.issue_refs', index=1,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -741,6 +762,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -765,6 +787,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_refs', full_name='monorail.AddIssuesToHotlistsRequest.hotlist_refs', index=0,
@@ -772,21 +795,21 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.AddIssuesToHotlistsRequest.issue_refs', index=1,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='note', full_name='monorail.AddIssuesToHotlistsRequest.note', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -810,6 +833,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -834,6 +858,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.RerankHotlistIssuesRequest.hotlist_ref', index=0,
@@ -841,28 +866,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='moved_refs', full_name='monorail.RerankHotlistIssuesRequest.moved_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='target_ref', full_name='monorail.RerankHotlistIssuesRequest.target_ref', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='split_above', full_name='monorail.RerankHotlistIssuesRequest.split_above', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -886,6 +911,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -910,6 +936,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.hotlist_ref', index=0,
@@ -917,21 +944,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.issue_ref', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='note', full_name='monorail.UpdateHotlistIssueNoteRequest.note', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -955,6 +982,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -979,6 +1007,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='hotlist_ref', full_name='monorail.DeleteHotlistRequest.hotlist_ref', index=0,
@@ -986,7 +1015,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1010,6 +1039,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1027,75 +1057,6 @@
serialized_end=2246,
)
-
-_PREDICTCOMPONENTREQUEST = _descriptor.Descriptor(
- name='PredictComponentRequest',
- full_name='monorail.PredictComponentRequest',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- _descriptor.FieldDescriptor(
- name='text', full_name='monorail.PredictComponentRequest.text', index=0,
- number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
- _descriptor.FieldDescriptor(
- name='project_name', full_name='monorail.PredictComponentRequest.project_name', index=1,
- number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- serialized_options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=2248,
- serialized_end=2309,
-)
-
-
-_PREDICTCOMPONENTRESPONSE = _descriptor.Descriptor(
- name='PredictComponentResponse',
- full_name='monorail.PredictComponentResponse',
- filename=None,
- file=DESCRIPTOR,
- containing_type=None,
- fields=[
- _descriptor.FieldDescriptor(
- name='component_ref', full_name='monorail.PredictComponentResponse.component_ref', index=0,
- number=1, type=11, cpp_type=10, label=1,
- has_default_value=False, default_value=None,
- message_type=None, enum_type=None, containing_type=None,
- is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
- ],
- extensions=[
- ],
- nested_types=[],
- enum_types=[
- ],
- serialized_options=None,
- is_extendable=False,
- syntax='proto3',
- extension_ranges=[],
- oneofs=[
- ],
- serialized_start=2311,
- serialized_end=2384,
-)
-
_LISTHOTLISTSBYUSERREQUEST.fields_by_name['user'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_LISTHOTLISTSBYUSERRESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
_LISTHOTLISTSBYISSUEREQUEST.fields_by_name['issue'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
@@ -1121,7 +1082,6 @@
_UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
_UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['issue_ref'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
_DELETEHOTLISTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
-_PREDICTCOMPONENTRESPONSE.fields_by_name['component_ref'].message_type = api_dot_api__proto_dot_common__pb2._COMPONENTREF
DESCRIPTOR.message_types_by_name['ListHotlistsByUserRequest'] = _LISTHOTLISTSBYUSERREQUEST
DESCRIPTOR.message_types_by_name['ListHotlistsByUserResponse'] = _LISTHOTLISTSBYUSERRESPONSE
DESCRIPTOR.message_types_by_name['ListHotlistsByIssueRequest'] = _LISTHOTLISTSBYISSUEREQUEST
@@ -1152,235 +1112,220 @@
DESCRIPTOR.message_types_by_name['UpdateHotlistIssueNoteResponse'] = _UPDATEHOTLISTISSUENOTERESPONSE
DESCRIPTOR.message_types_by_name['DeleteHotlistRequest'] = _DELETEHOTLISTREQUEST
DESCRIPTOR.message_types_by_name['DeleteHotlistResponse'] = _DELETEHOTLISTRESPONSE
-DESCRIPTOR.message_types_by_name['PredictComponentRequest'] = _PREDICTCOMPONENTREQUEST
-DESCRIPTOR.message_types_by_name['PredictComponentResponse'] = _PREDICTCOMPONENTRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-ListHotlistsByUserRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTSBYUSERREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByUserRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTSBYUSERREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserRequest)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistsByUserRequest)
-ListHotlistsByUserResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTSBYUSERRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByUserResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTSBYUSERRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserResponse)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistsByUserResponse)
-ListHotlistsByIssueRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTSBYISSUEREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByIssueRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTSBYISSUEREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistsByIssueRequest)
-ListHotlistsByIssueResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTSBYISSUERESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByIssueResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTSBYISSUERESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistsByIssueResponse)
-ListRecentlyVisitedHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+ListRecentlyVisitedHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTRECENTLYVISITEDHOTLISTSREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListRecentlyVisitedHotlistsRequest)
-ListRecentlyVisitedHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+ListRecentlyVisitedHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTRECENTLYVISITEDHOTLISTSRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListRecentlyVisitedHotlistsResponse)
-ListStarredHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTARREDHOTLISTSREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+ListStarredHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTARREDHOTLISTSREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListStarredHotlistsRequest)
-ListStarredHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTARREDHOTLISTSRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+ListStarredHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTARREDHOTLISTSRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListStarredHotlistsResponse)
-GetHotlistStarCountRequest = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETHOTLISTSTARCOUNTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+GetHotlistStarCountRequest = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETHOTLISTSTARCOUNTREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountRequest)
- ))
+ })
_sym_db.RegisterMessage(GetHotlistStarCountRequest)
-GetHotlistStarCountResponse = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETHOTLISTSTARCOUNTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+GetHotlistStarCountResponse = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETHOTLISTSTARCOUNTRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountResponse)
- ))
+ })
_sym_db.RegisterMessage(GetHotlistStarCountResponse)
-StarHotlistRequest = _reflection.GeneratedProtocolMessageType('StarHotlistRequest', (_message.Message,), dict(
- DESCRIPTOR = _STARHOTLISTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+StarHotlistRequest = _reflection.GeneratedProtocolMessageType('StarHotlistRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _STARHOTLISTREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarHotlistRequest)
- ))
+ })
_sym_db.RegisterMessage(StarHotlistRequest)
-StarHotlistResponse = _reflection.GeneratedProtocolMessageType('StarHotlistResponse', (_message.Message,), dict(
- DESCRIPTOR = _STARHOTLISTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+StarHotlistResponse = _reflection.GeneratedProtocolMessageType('StarHotlistResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _STARHOTLISTRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarHotlistResponse)
- ))
+ })
_sym_db.RegisterMessage(StarHotlistResponse)
-GetHotlistRequest = _reflection.GeneratedProtocolMessageType('GetHotlistRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETHOTLISTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+GetHotlistRequest = _reflection.GeneratedProtocolMessageType('GetHotlistRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETHOTLISTREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetHotlistRequest)
- ))
+ })
_sym_db.RegisterMessage(GetHotlistRequest)
-GetHotlistResponse = _reflection.GeneratedProtocolMessageType('GetHotlistResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETHOTLISTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+GetHotlistResponse = _reflection.GeneratedProtocolMessageType('GetHotlistResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETHOTLISTRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetHotlistResponse)
- ))
+ })
_sym_db.RegisterMessage(GetHotlistResponse)
-ListHotlistItemsRequest = _reflection.GeneratedProtocolMessageType('ListHotlistItemsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTITEMSREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistItemsRequest = _reflection.GeneratedProtocolMessageType('ListHotlistItemsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTITEMSREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistItemsRequest)
-ListHotlistItemsResponse = _reflection.GeneratedProtocolMessageType('ListHotlistItemsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTHOTLISTITEMSRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+ListHotlistItemsResponse = _reflection.GeneratedProtocolMessageType('ListHotlistItemsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTHOTLISTITEMSRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListHotlistItemsResponse)
-CreateHotlistRequest = _reflection.GeneratedProtocolMessageType('CreateHotlistRequest', (_message.Message,), dict(
- DESCRIPTOR = _CREATEHOTLISTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+CreateHotlistRequest = _reflection.GeneratedProtocolMessageType('CreateHotlistRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CREATEHOTLISTREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.CreateHotlistRequest)
- ))
+ })
_sym_db.RegisterMessage(CreateHotlistRequest)
-CreateHotlistResponse = _reflection.GeneratedProtocolMessageType('CreateHotlistResponse', (_message.Message,), dict(
- DESCRIPTOR = _CREATEHOTLISTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+CreateHotlistResponse = _reflection.GeneratedProtocolMessageType('CreateHotlistResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CREATEHOTLISTRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.CreateHotlistResponse)
- ))
+ })
_sym_db.RegisterMessage(CreateHotlistResponse)
-CheckHotlistNameRequest = _reflection.GeneratedProtocolMessageType('CheckHotlistNameRequest', (_message.Message,), dict(
- DESCRIPTOR = _CHECKHOTLISTNAMEREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+CheckHotlistNameRequest = _reflection.GeneratedProtocolMessageType('CheckHotlistNameRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKHOTLISTNAMEREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameRequest)
- ))
+ })
_sym_db.RegisterMessage(CheckHotlistNameRequest)
-CheckHotlistNameResponse = _reflection.GeneratedProtocolMessageType('CheckHotlistNameResponse', (_message.Message,), dict(
- DESCRIPTOR = _CHECKHOTLISTNAMERESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+CheckHotlistNameResponse = _reflection.GeneratedProtocolMessageType('CheckHotlistNameResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKHOTLISTNAMERESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameResponse)
- ))
+ })
_sym_db.RegisterMessage(CheckHotlistNameResponse)
-RemoveIssuesFromHotlistsRequest = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsRequest', (_message.Message,), dict(
- DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+RemoveIssuesFromHotlistsRequest = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _REMOVEISSUESFROMHOTLISTSREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsRequest)
- ))
+ })
_sym_db.RegisterMessage(RemoveIssuesFromHotlistsRequest)
-RemoveIssuesFromHotlistsResponse = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsResponse', (_message.Message,), dict(
- DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+RemoveIssuesFromHotlistsResponse = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _REMOVEISSUESFROMHOTLISTSRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsResponse)
- ))
+ })
_sym_db.RegisterMessage(RemoveIssuesFromHotlistsResponse)
-AddIssuesToHotlistsRequest = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsRequest', (_message.Message,), dict(
- DESCRIPTOR = _ADDISSUESTOHOTLISTSREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+AddIssuesToHotlistsRequest = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _ADDISSUESTOHOTLISTSREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsRequest)
- ))
+ })
_sym_db.RegisterMessage(AddIssuesToHotlistsRequest)
-AddIssuesToHotlistsResponse = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsResponse', (_message.Message,), dict(
- DESCRIPTOR = _ADDISSUESTOHOTLISTSRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+AddIssuesToHotlistsResponse = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _ADDISSUESTOHOTLISTSRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsResponse)
- ))
+ })
_sym_db.RegisterMessage(AddIssuesToHotlistsResponse)
-RerankHotlistIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _RERANKHOTLISTISSUESREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+RerankHotlistIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _RERANKHOTLISTISSUESREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(RerankHotlistIssuesRequest)
-RerankHotlistIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _RERANKHOTLISTISSUESRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+RerankHotlistIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _RERANKHOTLISTISSUESRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(RerankHotlistIssuesResponse)
-UpdateHotlistIssueNoteRequest = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteRequest', (_message.Message,), dict(
- DESCRIPTOR = _UPDATEHOTLISTISSUENOTEREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+UpdateHotlistIssueNoteRequest = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEHOTLISTISSUENOTEREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteRequest)
- ))
+ })
_sym_db.RegisterMessage(UpdateHotlistIssueNoteRequest)
-UpdateHotlistIssueNoteResponse = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteResponse', (_message.Message,), dict(
- DESCRIPTOR = _UPDATEHOTLISTISSUENOTERESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+UpdateHotlistIssueNoteResponse = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEHOTLISTISSUENOTERESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteResponse)
- ))
+ })
_sym_db.RegisterMessage(UpdateHotlistIssueNoteResponse)
-DeleteHotlistRequest = _reflection.GeneratedProtocolMessageType('DeleteHotlistRequest', (_message.Message,), dict(
- DESCRIPTOR = _DELETEHOTLISTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
+DeleteHotlistRequest = _reflection.GeneratedProtocolMessageType('DeleteHotlistRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEHOTLISTREQUEST,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteHotlistRequest)
- ))
+ })
_sym_db.RegisterMessage(DeleteHotlistRequest)
-DeleteHotlistResponse = _reflection.GeneratedProtocolMessageType('DeleteHotlistResponse', (_message.Message,), dict(
- DESCRIPTOR = _DELETEHOTLISTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
+DeleteHotlistResponse = _reflection.GeneratedProtocolMessageType('DeleteHotlistResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEHOTLISTRESPONSE,
+ '__module__' : 'api.api_proto.features_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteHotlistResponse)
- ))
+ })
_sym_db.RegisterMessage(DeleteHotlistResponse)
-PredictComponentRequest = _reflection.GeneratedProtocolMessageType('PredictComponentRequest', (_message.Message,), dict(
- DESCRIPTOR = _PREDICTCOMPONENTREQUEST,
- __module__ = 'api.api_proto.features_pb2'
- # @@protoc_insertion_point(class_scope:monorail.PredictComponentRequest)
- ))
-_sym_db.RegisterMessage(PredictComponentRequest)
-PredictComponentResponse = _reflection.GeneratedProtocolMessageType('PredictComponentResponse', (_message.Message,), dict(
- DESCRIPTOR = _PREDICTCOMPONENTRESPONSE,
- __module__ = 'api.api_proto.features_pb2'
- # @@protoc_insertion_point(class_scope:monorail.PredictComponentResponse)
- ))
-_sym_db.RegisterMessage(PredictComponentResponse)
-
-
+DESCRIPTOR._options = None
_FEATURES = _descriptor.ServiceDescriptor(
name='Features',
@@ -1388,8 +1333,9 @@
file=DESCRIPTOR,
index=0,
serialized_options=None,
- serialized_start=2387,
- serialized_end=3960,
+ create_key=_descriptor._internal_create_key,
+ serialized_start=2249,
+ serialized_end=3729,
methods=[
_descriptor.MethodDescriptor(
name='ListHotlistsByUser',
@@ -1399,6 +1345,7 @@
input_type=_LISTHOTLISTSBYUSERREQUEST,
output_type=_LISTHOTLISTSBYUSERRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListHotlistsByIssue',
@@ -1408,6 +1355,7 @@
input_type=_LISTHOTLISTSBYISSUEREQUEST,
output_type=_LISTHOTLISTSBYISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListRecentlyVisitedHotlists',
@@ -1417,6 +1365,7 @@
input_type=_LISTRECENTLYVISITEDHOTLISTSREQUEST,
output_type=_LISTRECENTLYVISITEDHOTLISTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListStarredHotlists',
@@ -1426,6 +1375,7 @@
input_type=_LISTSTARREDHOTLISTSREQUEST,
output_type=_LISTSTARREDHOTLISTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetHotlistStarCount',
@@ -1435,6 +1385,7 @@
input_type=_GETHOTLISTSTARCOUNTREQUEST,
output_type=_GETHOTLISTSTARCOUNTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='StarHotlist',
@@ -1444,6 +1395,7 @@
input_type=_STARHOTLISTREQUEST,
output_type=_STARHOTLISTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetHotlist',
@@ -1453,6 +1405,7 @@
input_type=_GETHOTLISTREQUEST,
output_type=_GETHOTLISTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListHotlistItems',
@@ -1462,6 +1415,7 @@
input_type=_LISTHOTLISTITEMSREQUEST,
output_type=_LISTHOTLISTITEMSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CreateHotlist',
@@ -1471,6 +1425,7 @@
input_type=_CREATEHOTLISTREQUEST,
output_type=_CREATEHOTLISTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CheckHotlistName',
@@ -1480,6 +1435,7 @@
input_type=_CHECKHOTLISTNAMEREQUEST,
output_type=_CHECKHOTLISTNAMERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='RemoveIssuesFromHotlists',
@@ -1489,6 +1445,7 @@
input_type=_REMOVEISSUESFROMHOTLISTSREQUEST,
output_type=_REMOVEISSUESFROMHOTLISTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='AddIssuesToHotlists',
@@ -1498,6 +1455,7 @@
input_type=_ADDISSUESTOHOTLISTSREQUEST,
output_type=_ADDISSUESTOHOTLISTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='RerankHotlistIssues',
@@ -1507,6 +1465,7 @@
input_type=_RERANKHOTLISTISSUESREQUEST,
output_type=_RERANKHOTLISTISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='UpdateHotlistIssueNote',
@@ -1516,6 +1475,7 @@
input_type=_UPDATEHOTLISTISSUENOTEREQUEST,
output_type=_UPDATEHOTLISTISSUENOTERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='DeleteHotlist',
@@ -1525,15 +1485,7 @@
input_type=_DELETEHOTLISTREQUEST,
output_type=_DELETEHOTLISTRESPONSE,
serialized_options=None,
- ),
- _descriptor.MethodDescriptor(
- name='PredictComponent',
- full_name='monorail.Features.PredictComponent',
- index=15,
- containing_service=None,
- input_type=_PREDICTCOMPONENTREQUEST,
- output_type=_PREDICTCOMPONENTRESPONSE,
- serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_FEATURES)
diff --git a/api/api_proto/features_prpc_pb2.py b/api/api_proto/features_prpc_pb2.py
index 17257e5..74915d7 100644
--- a/api/api_proto/features_prpc_pb2.py
+++ b/api/api_proto/features_prpc_pb2.py
@@ -10,254 +10,242 @@
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
- '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')))
+ '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')))
_INDEX = {
f.name: {
'descriptor': f,
diff --git a/api/api_proto/issue_objects.proto b/api/api_proto/issue_objects.proto
index 9343c98..c6edfda 100644
--- a/api/api_proto/issue_objects.proto
+++ b/api/api_proto/issue_objects.proto
@@ -10,6 +10,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "google/protobuf/wrappers.proto";
import "api/api_proto/common.proto";
diff --git a/api/api_proto/issue_objects_pb2.py b/api/api_proto/issue_objects_pb2.py
index fa347e1..e96ec99 100644
--- a/api/api_proto/issue_objects_pb2.py
+++ b/api/api_proto/issue_objects_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/issue_objects.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
@@ -21,8 +20,9 @@
name='api/api_proto/issue_objects.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n!api/api_proto/issue_objects.proto\x12\x08monorail\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1a\x61pi/api_proto/common.proto\"\xe3\x01\n\x08\x41pproval\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12(\n\rapprover_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\x06status\x18\x03 \x01(\x0e\x32\x18.monorail.ApprovalStatus\x12\x0e\n\x06set_on\x18\x04 \x01(\x07\x12%\n\nsetter_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12%\n\tphase_ref\x18\x07 \x01(\x0b\x32\x12.monorail.PhaseRef\"N\n\tAmendment\x12\x12\n\nfield_name\x18\x01 \x01(\t\x12\x1a\n\x12new_or_delta_value\x18\x02 \x01(\t\x12\x11\n\told_value\x18\x03 \x01(\t\"\xac\x01\n\nAttachment\x12\x15\n\rattachment_id\x18\x01 \x01(\x04\x12\x10\n\x08\x66ilename\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x04\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12\x12\n\nis_deleted\x18\x05 \x01(\x08\x12\x15\n\rthumbnail_url\x18\x06 \x01(\t\x12\x10\n\x08view_url\x18\x07 \x01(\t\x12\x14\n\x0c\x64ownload_url\x18\x08 \x01(\t\"\x8c\x03\n\x07\x43omment\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x12\n\nis_deleted\x18\x04 \x01(\x08\x12$\n\tcommenter\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\x11\n\ttimestamp\x18\x06 \x01(\x07\x12\x0f\n\x07\x63ontent\x18\x07 \x01(\t\x12\x17\n\x0finbound_message\x18\x08 \x01(\t\x12\'\n\namendments\x18\t \x03(\x0b\x32\x13.monorail.Amendment\x12)\n\x0b\x61ttachments\x18\n \x03(\x0b\x32\x14.monorail.Attachment\x12(\n\x0c\x61pproval_ref\x18\x0b \x01(\x0b\x32\x12.monorail.FieldRef\x12\x17\n\x0f\x64\x65scription_num\x18\x0c \x01(\r\x12\x0f\n\x07is_spam\x18\r \x01(\x08\x12\x12\n\ncan_delete\x18\x0e \x01(\x08\x12\x10\n\x08\x63\x61n_flag\x18\x0f \x01(\x08\"}\n\nFieldValue\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12\r\n\x05value\x18\x02 \x01(\t\x12\x12\n\nis_derived\x18\x03 \x01(\x08\x12%\n\tphase_ref\x18\x04 \x01(\x0b\x32\x12.monorail.PhaseRef\"\xc0\x07\n\x05Issue\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\'\n\nstatus_ref\x18\x04 \x01(\x0b\x32\x13.monorail.StatusRef\x12$\n\towner_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\"\n\x07\x63\x63_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nlabel_refs\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12.\n\x0e\x63omponent_refs\x18\x08 \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x31\n\x15\x62locked_on_issue_refs\x18\t \x03(\x0b\x32\x12.monorail.IssueRef\x12/\n\x13\x62locking_issue_refs\x18\n \x03(\x0b\x32\x12.monorail.IssueRef\x12\x34\n\x18\x64\x61ngling_blocked_on_refs\x18\x17 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x32\n\x16\x64\x61ngling_blocking_refs\x18\x18 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x31\n\x15merged_into_issue_ref\x18\x0b \x01(\x0b\x32\x12.monorail.IssueRef\x12*\n\x0c\x66ield_values\x18\x0c \x03(\x0b\x32\x14.monorail.FieldValue\x12\x12\n\nis_deleted\x18\r \x01(\x08\x12\'\n\x0creporter_ref\x18\x0e \x01(\x0b\x32\x11.monorail.UserRef\x12\x18\n\x10opened_timestamp\x18\x0f \x01(\x07\x12\x18\n\x10\x63losed_timestamp\x18\x10 \x01(\x07\x12\x1a\n\x12modified_timestamp\x18\x11 \x01(\x07\x12$\n\x1c\x63omponent_modified_timestamp\x18\x19 \x01(\x07\x12!\n\x19status_modified_timestamp\x18\x1a \x01(\x07\x12 \n\x18owner_modified_timestamp\x18\x1b \x01(\x07\x12\x12\n\nstar_count\x18\x12 \x01(\r\x12\x0f\n\x07is_spam\x18\x13 \x01(\x08\x12\x18\n\x10\x61ttachment_count\x18\x14 \x01(\r\x12+\n\x0f\x61pproval_values\x18\x15 \x03(\x0b\x32\x12.monorail.Approval\x12\"\n\x06phases\x18\x16 \x03(\x0b\x32\x12.monorail.PhaseDef\"\x9a\x06\n\nIssueDelta\x12,\n\x06status\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12$\n\towner_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x0b\x63\x63_refs_add\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12)\n\x0e\x63\x63_refs_remove\x18\x04 \x03(\x0b\x32\x11.monorail.UserRef\x12-\n\rcomp_refs_add\x18\x05 \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x30\n\x10\x63omp_refs_remove\x18\x06 \x03(\x0b\x32\x16.monorail.ComponentRef\x12*\n\x0elabel_refs_add\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12-\n\x11label_refs_remove\x18\x08 \x03(\x0b\x32\x12.monorail.LabelRef\x12,\n\x0e\x66ield_vals_add\x18\t \x03(\x0b\x32\x14.monorail.FieldValue\x12/\n\x11\x66ield_vals_remove\x18\n \x03(\x0b\x32\x14.monorail.FieldValue\x12(\n\x0c\x66ields_clear\x18\x0b \x03(\x0b\x32\x12.monorail.FieldRef\x12/\n\x13\x62locked_on_refs_add\x18\x0c \x03(\x0b\x32\x12.monorail.IssueRef\x12\x32\n\x16\x62locked_on_refs_remove\x18\r \x03(\x0b\x32\x12.monorail.IssueRef\x12-\n\x11\x62locking_refs_add\x18\x0e \x03(\x0b\x32\x12.monorail.IssueRef\x12\x30\n\x14\x62locking_refs_remove\x18\x0f \x03(\x0b\x32\x12.monorail.IssueRef\x12+\n\x0fmerged_into_ref\x18\x10 \x01(\x0b\x32\x12.monorail.IssueRef\x12-\n\x07summary\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xa1\x02\n\rApprovalDelta\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.monorail.ApprovalStatus\x12,\n\x11\x61pprover_refs_add\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12/\n\x14\x61pprover_refs_remove\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12,\n\x0e\x66ield_vals_add\x18\x04 \x03(\x0b\x32\x14.monorail.FieldValue\x12/\n\x11\x66ield_vals_remove\x18\x05 \x03(\x0b\x32\x14.monorail.FieldValue\x12(\n\x0c\x66ields_clear\x18\x06 \x03(\x0b\x32\x12.monorail.FieldRef\"5\n\x10\x41ttachmentUpload\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"G\n\x0cIssueSummary\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x0f\n\x07summary\x18\x03 \x01(\t\"?\n\x08PhaseDef\x12%\n\tphase_ref\x18\x01 \x01(\x0b\x32\x12.monorail.PhaseRef\x12\x0c\n\x04rank\x18\x02 \x01(\r\"\x1e\n\x08PhaseRef\x12\x12\n\nphase_name\x18\x01 \x01(\t*\x90\x01\n\x0e\x41pprovalStatus\x12\x0b\n\x07NOT_SET\x10\x00\x12\x10\n\x0cNEEDS_REVIEW\x10\x01\x12\x06\n\x02NA\x10\x02\x12\x14\n\x10REVIEW_REQUESTED\x10\x03\x12\x12\n\x0eREVIEW_STARTED\x10\x04\x12\r\n\tNEED_INFO\x10\x05\x12\x0c\n\x08\x41PPROVED\x10\x06\x12\x10\n\x0cNOT_APPROVED\x10\x07*^\n\x0bSearchScope\x12\x07\n\x03\x41LL\x10\x00\x12\x07\n\x03NEW\x10\x01\x12\x08\n\x04OPEN\x10\x02\x12\t\n\x05OWNED\x10\x03\x12\x0c\n\x08REPORTED\x10\x04\x12\x0b\n\x07STARRED\x10\x05\x12\r\n\tTO_VERIFY\x10\x06\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n!api/api_proto/issue_objects.proto\x12\x08monorail\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1a\x61pi/api_proto/common.proto\"\xe3\x01\n\x08\x41pproval\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12(\n\rapprover_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\x06status\x18\x03 \x01(\x0e\x32\x18.monorail.ApprovalStatus\x12\x0e\n\x06set_on\x18\x04 \x01(\x07\x12%\n\nsetter_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12%\n\tphase_ref\x18\x07 \x01(\x0b\x32\x12.monorail.PhaseRef\"N\n\tAmendment\x12\x12\n\nfield_name\x18\x01 \x01(\t\x12\x1a\n\x12new_or_delta_value\x18\x02 \x01(\t\x12\x11\n\told_value\x18\x03 \x01(\t\"\xac\x01\n\nAttachment\x12\x15\n\rattachment_id\x18\x01 \x01(\x04\x12\x10\n\x08\x66ilename\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x04\x12\x14\n\x0c\x63ontent_type\x18\x04 \x01(\t\x12\x12\n\nis_deleted\x18\x05 \x01(\x08\x12\x15\n\rthumbnail_url\x18\x06 \x01(\t\x12\x10\n\x08view_url\x18\x07 \x01(\t\x12\x14\n\x0c\x64ownload_url\x18\x08 \x01(\t\"\x8c\x03\n\x07\x43omment\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x12\n\nis_deleted\x18\x04 \x01(\x08\x12$\n\tcommenter\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\x11\n\ttimestamp\x18\x06 \x01(\x07\x12\x0f\n\x07\x63ontent\x18\x07 \x01(\t\x12\x17\n\x0finbound_message\x18\x08 \x01(\t\x12\'\n\namendments\x18\t \x03(\x0b\x32\x13.monorail.Amendment\x12)\n\x0b\x61ttachments\x18\n \x03(\x0b\x32\x14.monorail.Attachment\x12(\n\x0c\x61pproval_ref\x18\x0b \x01(\x0b\x32\x12.monorail.FieldRef\x12\x17\n\x0f\x64\x65scription_num\x18\x0c \x01(\r\x12\x0f\n\x07is_spam\x18\r \x01(\x08\x12\x12\n\ncan_delete\x18\x0e \x01(\x08\x12\x10\n\x08\x63\x61n_flag\x18\x0f \x01(\x08\"}\n\nFieldValue\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12\r\n\x05value\x18\x02 \x01(\t\x12\x12\n\nis_derived\x18\x03 \x01(\x08\x12%\n\tphase_ref\x18\x04 \x01(\x0b\x32\x12.monorail.PhaseRef\"\xc0\x07\n\x05Issue\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\'\n\nstatus_ref\x18\x04 \x01(\x0b\x32\x13.monorail.StatusRef\x12$\n\towner_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\"\n\x07\x63\x63_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nlabel_refs\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12.\n\x0e\x63omponent_refs\x18\x08 \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x31\n\x15\x62locked_on_issue_refs\x18\t \x03(\x0b\x32\x12.monorail.IssueRef\x12/\n\x13\x62locking_issue_refs\x18\n \x03(\x0b\x32\x12.monorail.IssueRef\x12\x34\n\x18\x64\x61ngling_blocked_on_refs\x18\x17 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x32\n\x16\x64\x61ngling_blocking_refs\x18\x18 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x31\n\x15merged_into_issue_ref\x18\x0b \x01(\x0b\x32\x12.monorail.IssueRef\x12*\n\x0c\x66ield_values\x18\x0c \x03(\x0b\x32\x14.monorail.FieldValue\x12\x12\n\nis_deleted\x18\r \x01(\x08\x12\'\n\x0creporter_ref\x18\x0e \x01(\x0b\x32\x11.monorail.UserRef\x12\x18\n\x10opened_timestamp\x18\x0f \x01(\x07\x12\x18\n\x10\x63losed_timestamp\x18\x10 \x01(\x07\x12\x1a\n\x12modified_timestamp\x18\x11 \x01(\x07\x12$\n\x1c\x63omponent_modified_timestamp\x18\x19 \x01(\x07\x12!\n\x19status_modified_timestamp\x18\x1a \x01(\x07\x12 \n\x18owner_modified_timestamp\x18\x1b \x01(\x07\x12\x12\n\nstar_count\x18\x12 \x01(\r\x12\x0f\n\x07is_spam\x18\x13 \x01(\x08\x12\x18\n\x10\x61ttachment_count\x18\x14 \x01(\r\x12+\n\x0f\x61pproval_values\x18\x15 \x03(\x0b\x32\x12.monorail.Approval\x12\"\n\x06phases\x18\x16 \x03(\x0b\x32\x12.monorail.PhaseDef\"\x9a\x06\n\nIssueDelta\x12,\n\x06status\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12$\n\towner_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x0b\x63\x63_refs_add\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12)\n\x0e\x63\x63_refs_remove\x18\x04 \x03(\x0b\x32\x11.monorail.UserRef\x12-\n\rcomp_refs_add\x18\x05 \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x30\n\x10\x63omp_refs_remove\x18\x06 \x03(\x0b\x32\x16.monorail.ComponentRef\x12*\n\x0elabel_refs_add\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12-\n\x11label_refs_remove\x18\x08 \x03(\x0b\x32\x12.monorail.LabelRef\x12,\n\x0e\x66ield_vals_add\x18\t \x03(\x0b\x32\x14.monorail.FieldValue\x12/\n\x11\x66ield_vals_remove\x18\n \x03(\x0b\x32\x14.monorail.FieldValue\x12(\n\x0c\x66ields_clear\x18\x0b \x03(\x0b\x32\x12.monorail.FieldRef\x12/\n\x13\x62locked_on_refs_add\x18\x0c \x03(\x0b\x32\x12.monorail.IssueRef\x12\x32\n\x16\x62locked_on_refs_remove\x18\r \x03(\x0b\x32\x12.monorail.IssueRef\x12-\n\x11\x62locking_refs_add\x18\x0e \x03(\x0b\x32\x12.monorail.IssueRef\x12\x30\n\x14\x62locking_refs_remove\x18\x0f \x03(\x0b\x32\x12.monorail.IssueRef\x12+\n\x0fmerged_into_ref\x18\x10 \x01(\x0b\x32\x12.monorail.IssueRef\x12-\n\x07summary\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xa1\x02\n\rApprovalDelta\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.monorail.ApprovalStatus\x12,\n\x11\x61pprover_refs_add\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12/\n\x14\x61pprover_refs_remove\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12,\n\x0e\x66ield_vals_add\x18\x04 \x03(\x0b\x32\x14.monorail.FieldValue\x12/\n\x11\x66ield_vals_remove\x18\x05 \x03(\x0b\x32\x14.monorail.FieldValue\x12(\n\x0c\x66ields_clear\x18\x06 \x03(\x0b\x32\x12.monorail.FieldRef\"5\n\x10\x41ttachmentUpload\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"G\n\x0cIssueSummary\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08local_id\x18\x02 \x01(\r\x12\x0f\n\x07summary\x18\x03 \x01(\t\"?\n\x08PhaseDef\x12%\n\tphase_ref\x18\x01 \x01(\x0b\x32\x12.monorail.PhaseRef\x12\x0c\n\x04rank\x18\x02 \x01(\r\"\x1e\n\x08PhaseRef\x12\x12\n\nphase_name\x18\x01 \x01(\t*\x90\x01\n\x0e\x41pprovalStatus\x12\x0b\n\x07NOT_SET\x10\x00\x12\x10\n\x0cNEEDS_REVIEW\x10\x01\x12\x06\n\x02NA\x10\x02\x12\x14\n\x10REVIEW_REQUESTED\x10\x03\x12\x12\n\x0eREVIEW_STARTED\x10\x04\x12\r\n\tNEED_INFO\x10\x05\x12\x0c\n\x08\x41PPROVED\x10\x06\x12\x10\n\x0cNOT_APPROVED\x10\x07*^\n\x0bSearchScope\x12\x07\n\x03\x41LL\x10\x00\x12\x07\n\x03NEW\x10\x01\x12\x08\n\x04OPEN\x10\x02\x12\t\n\x05OWNED\x10\x03\x12\x0c\n\x08REPORTED\x10\x04\x12\x0b\n\x07STARRED\x10\x05\x12\r\n\tTO_VERIFY\x10\x06\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,api_dot_api__proto_dot_common__pb2.DESCRIPTOR,])
@@ -31,39 +31,48 @@
full_name='monorail.ApprovalStatus',
filename=None,
file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='NOT_SET', index=0, number=0,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='NEEDS_REVIEW', index=1, number=1,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='NA', index=2, number=2,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='REVIEW_REQUESTED', index=3, number=3,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='REVIEW_STARTED', index=4, number=4,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='NEED_INFO', index=5, number=5,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='APPROVED', index=6, number=6,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='NOT_APPROVED', index=7, number=7,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
@@ -78,35 +87,43 @@
full_name='monorail.SearchScope',
filename=None,
file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='ALL', index=0, number=0,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='NEW', index=1, number=1,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='OPEN', index=2, number=2,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='OWNED', index=3, number=3,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='REPORTED', index=4, number=4,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='STARRED', index=5, number=5,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='TO_VERIFY', index=6, number=6,
serialized_options=None,
- type=None),
+ type=None,
+ create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
@@ -140,6 +157,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.Approval.field_ref', index=0,
@@ -147,42 +165,42 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approver_refs', full_name='monorail.Approval.approver_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='status', full_name='monorail.Approval.status', index=2,
number=3, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='set_on', full_name='monorail.Approval.set_on', index=3,
number=4, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='setter_ref', full_name='monorail.Approval.setter_ref', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='phase_ref', full_name='monorail.Approval.phase_ref', index=5,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -206,28 +224,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_name', full_name='monorail.Amendment.field_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='new_or_delta_value', full_name='monorail.Amendment.new_or_delta_value', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='old_value', full_name='monorail.Amendment.old_value', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -251,6 +270,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='attachment_id', full_name='monorail.Attachment.attachment_id', index=0,
@@ -258,56 +278,56 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='filename', full_name='monorail.Attachment.filename', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='size', full_name='monorail.Attachment.size', index=2,
number=3, type=4, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='content_type', full_name='monorail.Attachment.content_type', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_deleted', full_name='monorail.Attachment.is_deleted', index=4,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='thumbnail_url', full_name='monorail.Attachment.thumbnail_url', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='view_url', full_name='monorail.Attachment.view_url', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='download_url', full_name='monorail.Attachment.download_url', index=7,
number=8, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -331,112 +351,113 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.Comment.project_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='local_id', full_name='monorail.Comment.local_id', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence_num', full_name='monorail.Comment.sequence_num', index=2,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_deleted', full_name='monorail.Comment.is_deleted', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='commenter', full_name='monorail.Comment.commenter', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='timestamp', full_name='monorail.Comment.timestamp', index=5,
number=6, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='content', full_name='monorail.Comment.content', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='inbound_message', full_name='monorail.Comment.inbound_message', index=7,
number=8, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='amendments', full_name='monorail.Comment.amendments', index=8,
number=9, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='attachments', full_name='monorail.Comment.attachments', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_ref', full_name='monorail.Comment.approval_ref', index=10,
number=11, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='description_num', full_name='monorail.Comment.description_num', index=11,
number=12, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_spam', full_name='monorail.Comment.is_spam', index=12,
number=13, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='can_delete', full_name='monorail.Comment.can_delete', index=13,
number=14, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='can_flag', full_name='monorail.Comment.can_flag', index=14,
number=15, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -460,6 +481,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.FieldValue.field_ref', index=0,
@@ -467,28 +489,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='value', full_name='monorail.FieldValue.value', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_derived', full_name='monorail.FieldValue.is_derived', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='phase_ref', full_name='monorail.FieldValue.phase_ref', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -512,196 +534,197 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.Issue.project_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='local_id', full_name='monorail.Issue.local_id', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.Issue.summary', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='status_ref', full_name='monorail.Issue.status_ref', index=3,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_ref', full_name='monorail.Issue.owner_ref', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='cc_refs', full_name='monorail.Issue.cc_refs', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_refs', full_name='monorail.Issue.label_refs', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_refs', full_name='monorail.Issue.component_refs', index=7,
number=8, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocked_on_issue_refs', full_name='monorail.Issue.blocked_on_issue_refs', index=8,
number=9, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocking_issue_refs', full_name='monorail.Issue.blocking_issue_refs', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='dangling_blocked_on_refs', full_name='monorail.Issue.dangling_blocked_on_refs', index=10,
number=23, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='dangling_blocking_refs', full_name='monorail.Issue.dangling_blocking_refs', index=11,
number=24, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='merged_into_issue_ref', full_name='monorail.Issue.merged_into_issue_ref', index=12,
number=11, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_values', full_name='monorail.Issue.field_values', index=13,
number=12, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_deleted', full_name='monorail.Issue.is_deleted', index=14,
number=13, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='reporter_ref', full_name='monorail.Issue.reporter_ref', index=15,
number=14, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='opened_timestamp', full_name='monorail.Issue.opened_timestamp', index=16,
number=15, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='closed_timestamp', full_name='monorail.Issue.closed_timestamp', index=17,
number=16, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='modified_timestamp', full_name='monorail.Issue.modified_timestamp', index=18,
number=17, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_modified_timestamp', full_name='monorail.Issue.component_modified_timestamp', index=19,
number=25, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='status_modified_timestamp', full_name='monorail.Issue.status_modified_timestamp', index=20,
number=26, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_modified_timestamp', full_name='monorail.Issue.owner_modified_timestamp', index=21,
number=27, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.Issue.star_count', index=22,
number=18, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_spam', full_name='monorail.Issue.is_spam', index=23,
number=19, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='attachment_count', full_name='monorail.Issue.attachment_count', index=24,
number=20, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_values', full_name='monorail.Issue.approval_values', index=25,
number=21, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='phases', full_name='monorail.Issue.phases', index=26,
number=22, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -725,6 +748,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='status', full_name='monorail.IssueDelta.status', index=0,
@@ -732,119 +756,119 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_ref', full_name='monorail.IssueDelta.owner_ref', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='cc_refs_add', full_name='monorail.IssueDelta.cc_refs_add', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='cc_refs_remove', full_name='monorail.IssueDelta.cc_refs_remove', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comp_refs_add', full_name='monorail.IssueDelta.comp_refs_add', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comp_refs_remove', full_name='monorail.IssueDelta.comp_refs_remove', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_refs_add', full_name='monorail.IssueDelta.label_refs_add', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_refs_remove', full_name='monorail.IssueDelta.label_refs_remove', index=7,
number=8, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_vals_add', full_name='monorail.IssueDelta.field_vals_add', index=8,
number=9, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_vals_remove', full_name='monorail.IssueDelta.field_vals_remove', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='fields_clear', full_name='monorail.IssueDelta.fields_clear', index=10,
number=11, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocked_on_refs_add', full_name='monorail.IssueDelta.blocked_on_refs_add', index=11,
number=12, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocked_on_refs_remove', full_name='monorail.IssueDelta.blocked_on_refs_remove', index=12,
number=13, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocking_refs_add', full_name='monorail.IssueDelta.blocking_refs_add', index=13,
number=14, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='blocking_refs_remove', full_name='monorail.IssueDelta.blocking_refs_remove', index=14,
number=15, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='merged_into_ref', full_name='monorail.IssueDelta.merged_into_ref', index=15,
number=16, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.IssueDelta.summary', index=16,
number=17, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -868,6 +892,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='status', full_name='monorail.ApprovalDelta.status', index=0,
@@ -875,42 +900,42 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approver_refs_add', full_name='monorail.ApprovalDelta.approver_refs_add', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approver_refs_remove', full_name='monorail.ApprovalDelta.approver_refs_remove', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_vals_add', full_name='monorail.ApprovalDelta.field_vals_add', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_vals_remove', full_name='monorail.ApprovalDelta.field_vals_remove', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='fields_clear', full_name='monorail.ApprovalDelta.fields_clear', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -934,21 +959,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='filename', full_name='monorail.AttachmentUpload.filename', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='content', full_name='monorail.AttachmentUpload.content', index=1,
number=2, type=12, cpp_type=9, label=1,
- has_default_value=False, default_value=_b(""),
+ has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -972,28 +998,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.IssueSummary.project_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='local_id', full_name='monorail.IssueSummary.local_id', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.IssueSummary.summary', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1017,6 +1044,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='phase_ref', full_name='monorail.PhaseDef.phase_ref', index=0,
@@ -1024,14 +1052,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='rank', full_name='monorail.PhaseDef.rank', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1055,14 +1083,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='phase_name', full_name='monorail.PhaseRef.phase_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1144,89 +1173,90 @@
DESCRIPTOR.enum_types_by_name['SearchScope'] = _SEARCHSCOPE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-Approval = _reflection.GeneratedProtocolMessageType('Approval', (_message.Message,), dict(
- DESCRIPTOR = _APPROVAL,
- __module__ = 'api.api_proto.issue_objects_pb2'
+Approval = _reflection.GeneratedProtocolMessageType('Approval', (_message.Message,), {
+ 'DESCRIPTOR' : _APPROVAL,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Approval)
- ))
+ })
_sym_db.RegisterMessage(Approval)
-Amendment = _reflection.GeneratedProtocolMessageType('Amendment', (_message.Message,), dict(
- DESCRIPTOR = _AMENDMENT,
- __module__ = 'api.api_proto.issue_objects_pb2'
+Amendment = _reflection.GeneratedProtocolMessageType('Amendment', (_message.Message,), {
+ 'DESCRIPTOR' : _AMENDMENT,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Amendment)
- ))
+ })
_sym_db.RegisterMessage(Amendment)
-Attachment = _reflection.GeneratedProtocolMessageType('Attachment', (_message.Message,), dict(
- DESCRIPTOR = _ATTACHMENT,
- __module__ = 'api.api_proto.issue_objects_pb2'
+Attachment = _reflection.GeneratedProtocolMessageType('Attachment', (_message.Message,), {
+ 'DESCRIPTOR' : _ATTACHMENT,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Attachment)
- ))
+ })
_sym_db.RegisterMessage(Attachment)
-Comment = _reflection.GeneratedProtocolMessageType('Comment', (_message.Message,), dict(
- DESCRIPTOR = _COMMENT,
- __module__ = 'api.api_proto.issue_objects_pb2'
+Comment = _reflection.GeneratedProtocolMessageType('Comment', (_message.Message,), {
+ 'DESCRIPTOR' : _COMMENT,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Comment)
- ))
+ })
_sym_db.RegisterMessage(Comment)
-FieldValue = _reflection.GeneratedProtocolMessageType('FieldValue', (_message.Message,), dict(
- DESCRIPTOR = _FIELDVALUE,
- __module__ = 'api.api_proto.issue_objects_pb2'
+FieldValue = _reflection.GeneratedProtocolMessageType('FieldValue', (_message.Message,), {
+ 'DESCRIPTOR' : _FIELDVALUE,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.FieldValue)
- ))
+ })
_sym_db.RegisterMessage(FieldValue)
-Issue = _reflection.GeneratedProtocolMessageType('Issue', (_message.Message,), dict(
- DESCRIPTOR = _ISSUE,
- __module__ = 'api.api_proto.issue_objects_pb2'
+Issue = _reflection.GeneratedProtocolMessageType('Issue', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUE,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Issue)
- ))
+ })
_sym_db.RegisterMessage(Issue)
-IssueDelta = _reflection.GeneratedProtocolMessageType('IssueDelta', (_message.Message,), dict(
- DESCRIPTOR = _ISSUEDELTA,
- __module__ = 'api.api_proto.issue_objects_pb2'
+IssueDelta = _reflection.GeneratedProtocolMessageType('IssueDelta', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUEDELTA,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueDelta)
- ))
+ })
_sym_db.RegisterMessage(IssueDelta)
-ApprovalDelta = _reflection.GeneratedProtocolMessageType('ApprovalDelta', (_message.Message,), dict(
- DESCRIPTOR = _APPROVALDELTA,
- __module__ = 'api.api_proto.issue_objects_pb2'
+ApprovalDelta = _reflection.GeneratedProtocolMessageType('ApprovalDelta', (_message.Message,), {
+ 'DESCRIPTOR' : _APPROVALDELTA,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ApprovalDelta)
- ))
+ })
_sym_db.RegisterMessage(ApprovalDelta)
-AttachmentUpload = _reflection.GeneratedProtocolMessageType('AttachmentUpload', (_message.Message,), dict(
- DESCRIPTOR = _ATTACHMENTUPLOAD,
- __module__ = 'api.api_proto.issue_objects_pb2'
+AttachmentUpload = _reflection.GeneratedProtocolMessageType('AttachmentUpload', (_message.Message,), {
+ 'DESCRIPTOR' : _ATTACHMENTUPLOAD,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.AttachmentUpload)
- ))
+ })
_sym_db.RegisterMessage(AttachmentUpload)
-IssueSummary = _reflection.GeneratedProtocolMessageType('IssueSummary', (_message.Message,), dict(
- DESCRIPTOR = _ISSUESUMMARY,
- __module__ = 'api.api_proto.issue_objects_pb2'
+IssueSummary = _reflection.GeneratedProtocolMessageType('IssueSummary', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUESUMMARY,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueSummary)
- ))
+ })
_sym_db.RegisterMessage(IssueSummary)
-PhaseDef = _reflection.GeneratedProtocolMessageType('PhaseDef', (_message.Message,), dict(
- DESCRIPTOR = _PHASEDEF,
- __module__ = 'api.api_proto.issue_objects_pb2'
+PhaseDef = _reflection.GeneratedProtocolMessageType('PhaseDef', (_message.Message,), {
+ 'DESCRIPTOR' : _PHASEDEF,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.PhaseDef)
- ))
+ })
_sym_db.RegisterMessage(PhaseDef)
-PhaseRef = _reflection.GeneratedProtocolMessageType('PhaseRef', (_message.Message,), dict(
- DESCRIPTOR = _PHASEREF,
- __module__ = 'api.api_proto.issue_objects_pb2'
+PhaseRef = _reflection.GeneratedProtocolMessageType('PhaseRef', (_message.Message,), {
+ 'DESCRIPTOR' : _PHASEREF,
+ '__module__' : 'api.api_proto.issue_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.PhaseRef)
- ))
+ })
_sym_db.RegisterMessage(PhaseRef)
+DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/api/api_proto/issues.proto b/api/api_proto/issues.proto
index 7c39884..9bee6ed 100644
--- a/api/api_proto/issues.proto
+++ b/api/api_proto/issues.proto
@@ -7,6 +7,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "google/protobuf/empty.proto";
import "api/api_proto/common.proto";
import "api/api_proto/issue_objects.proto";
diff --git a/api/api_proto/issues_pb2.py b/api/api_proto/issues_pb2.py
index 470fa21..791272d 100644
--- a/api/api_proto/issues_pb2.py
+++ b/api/api_proto/issues_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/issues.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -22,8 +21,9 @@
name='api/api_proto/issues.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x1a\x61pi/api_proto/issues.proto\x12\x08monorail\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\x1a#api/api_proto/project_objects.proto\"J\n\x12\x43reateIssueRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1e\n\x05issue\x18\x03 \x01(\x0b\x32\x0f.monorail.Issue\"8\n\x0fGetIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"Y\n\rIssueResponse\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\x12(\n\x0cmoved_to_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"\xa3\x01\n\x11ListIssuesRequest\x12\r\n\x05query\x18\x02 \x01(\t\x12\x14\n\x0c\x63\x61nned_query\x18\x03 \x01(\r\x12\x15\n\rproject_names\x18\x04 \x03(\t\x12(\n\npagination\x18\x05 \x01(\x0b\x32\x14.monorail.Pagination\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\x12\x11\n\tsort_spec\x18\x07 \x01(\t\"L\n\x12ListIssuesResponse\x12\x1f\n\x06issues\x18\x01 \x03(\x0b\x32\x0f.monorail.Issue\x12\x15\n\rtotal_results\x18\x02 \x01(\r\"E\n\x1bListReferencedIssuesRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\"h\n\x1cListReferencedIssuesResponse\x12\"\n\topen_refs\x18\x01 \x03(\x0b\x32\x0f.monorail.Issue\x12$\n\x0b\x63losed_refs\x18\x02 \x03(\x0b\x32\x0f.monorail.Issue\"H\n\x1eListApplicableFieldDefsRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\"I\n\x1fListApplicableFieldDefsResponse\x12&\n\nfield_defs\x18\x01 \x03(\x0b\x32\x12.monorail.FieldDef\"\xec\x01\n\x12UpdateIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nsend_email\x18\x03 \x01(\x08\x12#\n\x05\x64\x65lta\x18\x04 \x01(\x0b\x32\x14.monorail.IssueDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x16\n\x0eis_description\x18\x06 \x01(\x08\x12+\n\x07uploads\x18\x07 \x03(\x0b\x32\x1a.monorail.AttachmentUpload\x12\x18\n\x10kept_attachments\x18\x08 \x03(\x03\"J\n\x10StarIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"\'\n\x11StarIssueResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x15IsIssueStarredRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\",\n\x16IsIssueStarredResponse\x12\x12\n\nis_starred\x18\x01 \x01(\x08\"\x1a\n\x18ListStarredIssuesRequest\"K\n\x19ListStarredIssuesResponse\x12.\n\x12starred_issue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"<\n\x13ListCommentsRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\";\n\x14ListCommentsResponse\x12#\n\x08\x63omments\x18\x01 \x03(\x0b\x32\x11.monorail.Comment\"[\n\x15ListActivitiesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0e\n\x06\x62\x65\x66ore\x18\x03 \x01(\x07\x12\r\n\x05\x61\x66ter\x18\x04 \x01(\x07\"n\n\x16ListActivitiesResponse\x12#\n\x08\x63omments\x18\x01 \x03(\x0b\x32\x11.monorail.Comment\x12/\n\x0fissue_summaries\x18\x02 \x03(\x0b\x32\x16.monorail.IssueSummary\"c\n\x14\x44\x65leteCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\x03\x12\x0e\n\x06\x64\x65lete\x18\x04 \x01(\x08\"\xc9\x01\n\x1a\x42ulkUpdateApprovalsRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12%\n\tfield_ref\x18\x03 \x01(\x0b\x32\x12.monorail.FieldRef\x12/\n\x0e\x61pproval_delta\x18\x04 \x01(\x0b\x32\x17.monorail.ApprovalDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x12\n\nsend_email\x18\x06 \x01(\x08\"E\n\x1b\x42ulkUpdateApprovalsResponse\x12&\n\nissue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"\xa2\x02\n\x15UpdateApprovalRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12%\n\tfield_ref\x18\x03 \x01(\x0b\x32\x12.monorail.FieldRef\x12/\n\x0e\x61pproval_delta\x18\x04 \x01(\x0b\x32\x17.monorail.ApprovalDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x12\n\nsend_email\x18\x06 \x01(\x08\x12\x16\n\x0eis_description\x18\x07 \x01(\x08\x12+\n\x07uploads\x18\x08 \x03(\x0b\x32\x1a.monorail.AttachmentUpload\x12\x18\n\x10kept_attachments\x18\t \x03(\x03\">\n\x16UpdateApprovalResponse\x12$\n\x08\x61pproval\x18\x01 \x01(\x0b\x32\x12.monorail.Approval\"\x91\x01\n$ConvertIssueApprovalsTemplateRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x15\n\rtemplate_name\x18\x03 \x01(\t\x12\x17\n\x0f\x63omment_content\x18\x04 \x01(\t\x12\x12\n\nsend_email\x18\x05 \x01(\x08\"G\n%ConvertIssueApprovalsTemplateResponse\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\"\xa0\x01\n\x14IssueSnapshotRequest\x12\x11\n\ttimestamp\x18\x02 \x01(\x05\x12\r\n\x05query\x18\x03 \x01(\t\x12\x14\n\x0c\x63\x61nned_query\x18\x04 \x01(\x05\x12\x10\n\x08group_by\x18\x05 \x01(\t\x12\x14\n\x0clabel_prefix\x18\x06 \x01(\t\x12\x14\n\x0cproject_name\x18\x07 \x01(\t\x12\x12\n\nhotlist_id\x18\x08 \x01(\x05\"6\n\x12IssueSnapshotCount\x12\x11\n\tdimension\x18\x01 \x01(\t\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"\x86\x01\n\x15IssueSnapshotResponse\x12\x34\n\x0esnapshot_count\x18\x01 \x03(\x0b\x32\x1c.monorail.IssueSnapshotCount\x12\x19\n\x11unsupported_field\x18\x02 \x03(\t\x12\x1c\n\x14search_limit_reached\x18\x03 \x01(\x08\"i\n\x15PresubmitIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12)\n\x0bissue_delta\x18\x03 \x01(\x0b\x32\x14.monorail.IssueDelta\"\xb0\x02\n\x16PresubmitIssueResponse\x12\x1a\n\x12owner_availability\x18\x01 \x01(\t\x12 \n\x18owner_availability_state\x18\x02 \x01(\t\x12-\n\x0e\x64\x65rived_labels\x18\x03 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12-\n\x0e\x64\x65rived_owners\x18\x04 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12*\n\x0b\x64\x65rived_ccs\x18\x05 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12\'\n\x08warnings\x18\x06 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12%\n\x06\x65rrors\x18\x07 \x03(\x0b\x32\x15.monorail.ValueAndWhy\"\xa9\x01\n\x1cRerankBlockedOnIssuesRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12%\n\tmoved_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x04 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x05 \x01(\x08\"R\n\x1dRerankBlockedOnIssuesResponse\x12\x31\n\x15\x62locked_on_issue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"K\n\x12\x44\x65leteIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0e\n\x06\x64\x65lete\x18\x03 \x01(\x08\"\x15\n\x13\x44\x65leteIssueResponse\"h\n\x19\x44\x65leteIssueCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x0e\n\x06\x64\x65lete\x18\x04 \x01(\x08\"\x1c\n\x1a\x44\x65leteIssueCommentResponse\"}\n\x17\x44\x65leteAttachmentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x15\n\rattachment_id\x18\x04 \x01(\r\x12\x0e\n\x06\x64\x65lete\x18\x05 \x01(\x08\"\x1a\n\x18\x44\x65leteAttachmentResponse\"I\n\x11\x46lagIssuesRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04\x66lag\x18\x03 \x01(\x08\"\x14\n\x12\x46lagIssuesResponse\"_\n\x12\x46lagCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\x08\"\x15\n\x13\x46lagCommentResponse\"D\n\x1bListIssuePermissionsRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"3\n\x1cListIssuePermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t\"V\n\x10MoveIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x1b\n\x13target_project_name\x18\x03 \x01(\t\">\n\x11MoveIssueResponse\x12)\n\rnew_issue_ref\x18\x01 \x01(\x0b\x32\x12.monorail.IssueRef\"V\n\x10\x43opyIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x1b\n\x13target_project_name\x18\x03 \x01(\t\">\n\x11\x43opyIssueResponse\x12)\n\rnew_issue_ref\x18\x01 \x01(\x0b\x32\x12.monorail.IssueRef2\xeb\x11\n\x06Issues\x12\x46\n\x0b\x43reateIssue\x12\x1c.monorail.CreateIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12@\n\x08GetIssue\x12\x19.monorail.GetIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12I\n\nListIssues\x12\x1b.monorail.ListIssuesRequest\x1a\x1c.monorail.ListIssuesResponse\"\x00\x12g\n\x14ListReferencedIssues\x12%.monorail.ListReferencedIssuesRequest\x1a&.monorail.ListReferencedIssuesResponse\"\x00\x12p\n\x17ListApplicableFieldDefs\x12(.monorail.ListApplicableFieldDefsRequest\x1a).monorail.ListApplicableFieldDefsResponse\"\x00\x12\x46\n\x0bUpdateIssue\x12\x1c.monorail.UpdateIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12\x46\n\tStarIssue\x12\x1a.monorail.StarIssueRequest\x1a\x1b.monorail.StarIssueResponse\"\x00\x12U\n\x0eIsIssueStarred\x12\x1f.monorail.IsIssueStarredRequest\x1a .monorail.IsIssueStarredResponse\"\x00\x12^\n\x11ListStarredIssues\x12\".monorail.ListStarredIssuesRequest\x1a#.monorail.ListStarredIssuesResponse\"\x00\x12O\n\x0cListComments\x12\x1d.monorail.ListCommentsRequest\x1a\x1e.monorail.ListCommentsResponse\"\x00\x12U\n\x0eListActivities\x12\x1f.monorail.ListActivitiesRequest\x1a .monorail.ListActivitiesResponse\"\x00\x12I\n\rDeleteComment\x12\x1e.monorail.DeleteCommentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x13\x42ulkUpdateApprovals\x12$.monorail.BulkUpdateApprovalsRequest\x1a%.monorail.BulkUpdateApprovalsResponse\"\x00\x12U\n\x0eUpdateApproval\x12\x1f.monorail.UpdateApprovalRequest\x1a .monorail.UpdateApprovalResponse\"\x00\x12\x82\x01\n\x1d\x43onvertIssueApprovalsTemplate\x12..monorail.ConvertIssueApprovalsTemplateRequest\x1a/.monorail.ConvertIssueApprovalsTemplateResponse\"\x00\x12R\n\rIssueSnapshot\x12\x1e.monorail.IssueSnapshotRequest\x1a\x1f.monorail.IssueSnapshotResponse\"\x00\x12U\n\x0ePresubmitIssue\x12\x1f.monorail.PresubmitIssueRequest\x1a .monorail.PresubmitIssueResponse\"\x00\x12j\n\x15RerankBlockedOnIssues\x12&.monorail.RerankBlockedOnIssuesRequest\x1a\'.monorail.RerankBlockedOnIssuesResponse\"\x00\x12L\n\x0b\x44\x65leteIssue\x12\x1c.monorail.DeleteIssueRequest\x1a\x1d.monorail.DeleteIssueResponse\"\x00\x12\x61\n\x12\x44\x65leteIssueComment\x12#.monorail.DeleteIssueCommentRequest\x1a$.monorail.DeleteIssueCommentResponse\"\x00\x12[\n\x10\x44\x65leteAttachment\x12!.monorail.DeleteAttachmentRequest\x1a\".monorail.DeleteAttachmentResponse\"\x00\x12I\n\nFlagIssues\x12\x1b.monorail.FlagIssuesRequest\x1a\x1c.monorail.FlagIssuesResponse\"\x00\x12L\n\x0b\x46lagComment\x12\x1c.monorail.FlagCommentRequest\x1a\x1d.monorail.FlagCommentResponse\"\x00\x12g\n\x14ListIssuePermissions\x12%.monorail.ListIssuePermissionsRequest\x1a&.monorail.ListIssuePermissionsResponse\"\x00\x12\x46\n\tMoveIssue\x12\x1a.monorail.MoveIssueRequest\x1a\x1b.monorail.MoveIssueResponse\"\x00\x12\x46\n\tCopyIssue\x12\x1a.monorail.CopyIssueRequest\x1a\x1b.monorail.CopyIssueResponse\"\x00\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x1a\x61pi/api_proto/issues.proto\x12\x08monorail\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\x1a#api/api_proto/project_objects.proto\"J\n\x12\x43reateIssueRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1e\n\x05issue\x18\x03 \x01(\x0b\x32\x0f.monorail.Issue\"8\n\x0fGetIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"Y\n\rIssueResponse\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\x12(\n\x0cmoved_to_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"\xa3\x01\n\x11ListIssuesRequest\x12\r\n\x05query\x18\x02 \x01(\t\x12\x14\n\x0c\x63\x61nned_query\x18\x03 \x01(\r\x12\x15\n\rproject_names\x18\x04 \x03(\t\x12(\n\npagination\x18\x05 \x01(\x0b\x32\x14.monorail.Pagination\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\x12\x11\n\tsort_spec\x18\x07 \x01(\t\"L\n\x12ListIssuesResponse\x12\x1f\n\x06issues\x18\x01 \x03(\x0b\x32\x0f.monorail.Issue\x12\x15\n\rtotal_results\x18\x02 \x01(\r\"E\n\x1bListReferencedIssuesRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\"h\n\x1cListReferencedIssuesResponse\x12\"\n\topen_refs\x18\x01 \x03(\x0b\x32\x0f.monorail.Issue\x12$\n\x0b\x63losed_refs\x18\x02 \x03(\x0b\x32\x0f.monorail.Issue\"H\n\x1eListApplicableFieldDefsRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\"I\n\x1fListApplicableFieldDefsResponse\x12&\n\nfield_defs\x18\x01 \x03(\x0b\x32\x12.monorail.FieldDef\"\xec\x01\n\x12UpdateIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nsend_email\x18\x03 \x01(\x08\x12#\n\x05\x64\x65lta\x18\x04 \x01(\x0b\x32\x14.monorail.IssueDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x16\n\x0eis_description\x18\x06 \x01(\x08\x12+\n\x07uploads\x18\x07 \x03(\x0b\x32\x1a.monorail.AttachmentUpload\x12\x18\n\x10kept_attachments\x18\x08 \x03(\x03\"J\n\x10StarIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"\'\n\x11StarIssueResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x15IsIssueStarredRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\",\n\x16IsIssueStarredResponse\x12\x12\n\nis_starred\x18\x01 \x01(\x08\"\x1a\n\x18ListStarredIssuesRequest\"K\n\x19ListStarredIssuesResponse\x12.\n\x12starred_issue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"<\n\x13ListCommentsRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\";\n\x14ListCommentsResponse\x12#\n\x08\x63omments\x18\x01 \x03(\x0b\x32\x11.monorail.Comment\"[\n\x15ListActivitiesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0e\n\x06\x62\x65\x66ore\x18\x03 \x01(\x07\x12\r\n\x05\x61\x66ter\x18\x04 \x01(\x07\"n\n\x16ListActivitiesResponse\x12#\n\x08\x63omments\x18\x01 \x03(\x0b\x32\x11.monorail.Comment\x12/\n\x0fissue_summaries\x18\x02 \x03(\x0b\x32\x16.monorail.IssueSummary\"c\n\x14\x44\x65leteCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\x03\x12\x0e\n\x06\x64\x65lete\x18\x04 \x01(\x08\"\xc9\x01\n\x1a\x42ulkUpdateApprovalsRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12%\n\tfield_ref\x18\x03 \x01(\x0b\x32\x12.monorail.FieldRef\x12/\n\x0e\x61pproval_delta\x18\x04 \x01(\x0b\x32\x17.monorail.ApprovalDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x12\n\nsend_email\x18\x06 \x01(\x08\"E\n\x1b\x42ulkUpdateApprovalsResponse\x12&\n\nissue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"\xa2\x02\n\x15UpdateApprovalRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12%\n\tfield_ref\x18\x03 \x01(\x0b\x32\x12.monorail.FieldRef\x12/\n\x0e\x61pproval_delta\x18\x04 \x01(\x0b\x32\x17.monorail.ApprovalDelta\x12\x17\n\x0f\x63omment_content\x18\x05 \x01(\t\x12\x12\n\nsend_email\x18\x06 \x01(\x08\x12\x16\n\x0eis_description\x18\x07 \x01(\x08\x12+\n\x07uploads\x18\x08 \x03(\x0b\x32\x1a.monorail.AttachmentUpload\x12\x18\n\x10kept_attachments\x18\t \x03(\x03\">\n\x16UpdateApprovalResponse\x12$\n\x08\x61pproval\x18\x01 \x01(\x0b\x32\x12.monorail.Approval\"\x91\x01\n$ConvertIssueApprovalsTemplateRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x15\n\rtemplate_name\x18\x03 \x01(\t\x12\x17\n\x0f\x63omment_content\x18\x04 \x01(\t\x12\x12\n\nsend_email\x18\x05 \x01(\x08\"G\n%ConvertIssueApprovalsTemplateResponse\x12\x1e\n\x05issue\x18\x01 \x01(\x0b\x32\x0f.monorail.Issue\"\xa0\x01\n\x14IssueSnapshotRequest\x12\x11\n\ttimestamp\x18\x02 \x01(\x05\x12\r\n\x05query\x18\x03 \x01(\t\x12\x14\n\x0c\x63\x61nned_query\x18\x04 \x01(\x05\x12\x10\n\x08group_by\x18\x05 \x01(\t\x12\x14\n\x0clabel_prefix\x18\x06 \x01(\t\x12\x14\n\x0cproject_name\x18\x07 \x01(\t\x12\x12\n\nhotlist_id\x18\x08 \x01(\x05\"6\n\x12IssueSnapshotCount\x12\x11\n\tdimension\x18\x01 \x01(\t\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"\x86\x01\n\x15IssueSnapshotResponse\x12\x34\n\x0esnapshot_count\x18\x01 \x03(\x0b\x32\x1c.monorail.IssueSnapshotCount\x12\x19\n\x11unsupported_field\x18\x02 \x03(\t\x12\x1c\n\x14search_limit_reached\x18\x03 \x01(\x08\"i\n\x15PresubmitIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12)\n\x0bissue_delta\x18\x03 \x01(\x0b\x32\x14.monorail.IssueDelta\"\xb0\x02\n\x16PresubmitIssueResponse\x12\x1a\n\x12owner_availability\x18\x01 \x01(\t\x12 \n\x18owner_availability_state\x18\x02 \x01(\t\x12-\n\x0e\x64\x65rived_labels\x18\x03 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12-\n\x0e\x64\x65rived_owners\x18\x04 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12*\n\x0b\x64\x65rived_ccs\x18\x05 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12\'\n\x08warnings\x18\x06 \x03(\x0b\x32\x15.monorail.ValueAndWhy\x12%\n\x06\x65rrors\x18\x07 \x03(\x0b\x32\x15.monorail.ValueAndWhy\"\xa9\x01\n\x1cRerankBlockedOnIssuesRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12%\n\tmoved_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x04 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x05 \x01(\x08\"R\n\x1dRerankBlockedOnIssuesResponse\x12\x31\n\x15\x62locked_on_issue_refs\x18\x01 \x03(\x0b\x32\x12.monorail.IssueRef\"K\n\x12\x44\x65leteIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0e\n\x06\x64\x65lete\x18\x03 \x01(\x08\"\x15\n\x13\x44\x65leteIssueResponse\"h\n\x19\x44\x65leteIssueCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x0e\n\x06\x64\x65lete\x18\x04 \x01(\x08\"\x1c\n\x1a\x44\x65leteIssueCommentResponse\"}\n\x17\x44\x65leteAttachmentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x15\n\rattachment_id\x18\x04 \x01(\r\x12\x0e\n\x06\x64\x65lete\x18\x05 \x01(\x08\"\x1a\n\x18\x44\x65leteAttachmentResponse\"I\n\x11\x46lagIssuesRequest\x12&\n\nissue_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04\x66lag\x18\x03 \x01(\x08\"\x14\n\x12\x46lagIssuesResponse\"_\n\x12\x46lagCommentRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x14\n\x0csequence_num\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\x08\"\x15\n\x13\x46lagCommentResponse\"D\n\x1bListIssuePermissionsRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"3\n\x1cListIssuePermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t\"V\n\x10MoveIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x1b\n\x13target_project_name\x18\x03 \x01(\t\">\n\x11MoveIssueResponse\x12)\n\rnew_issue_ref\x18\x01 \x01(\x0b\x32\x12.monorail.IssueRef\"V\n\x10\x43opyIssueRequest\x12%\n\tissue_ref\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x1b\n\x13target_project_name\x18\x03 \x01(\t\">\n\x11\x43opyIssueResponse\x12)\n\rnew_issue_ref\x18\x01 \x01(\x0b\x32\x12.monorail.IssueRef2\xeb\x11\n\x06Issues\x12\x46\n\x0b\x43reateIssue\x12\x1c.monorail.CreateIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12@\n\x08GetIssue\x12\x19.monorail.GetIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12I\n\nListIssues\x12\x1b.monorail.ListIssuesRequest\x1a\x1c.monorail.ListIssuesResponse\"\x00\x12g\n\x14ListReferencedIssues\x12%.monorail.ListReferencedIssuesRequest\x1a&.monorail.ListReferencedIssuesResponse\"\x00\x12p\n\x17ListApplicableFieldDefs\x12(.monorail.ListApplicableFieldDefsRequest\x1a).monorail.ListApplicableFieldDefsResponse\"\x00\x12\x46\n\x0bUpdateIssue\x12\x1c.monorail.UpdateIssueRequest\x1a\x17.monorail.IssueResponse\"\x00\x12\x46\n\tStarIssue\x12\x1a.monorail.StarIssueRequest\x1a\x1b.monorail.StarIssueResponse\"\x00\x12U\n\x0eIsIssueStarred\x12\x1f.monorail.IsIssueStarredRequest\x1a .monorail.IsIssueStarredResponse\"\x00\x12^\n\x11ListStarredIssues\x12\".monorail.ListStarredIssuesRequest\x1a#.monorail.ListStarredIssuesResponse\"\x00\x12O\n\x0cListComments\x12\x1d.monorail.ListCommentsRequest\x1a\x1e.monorail.ListCommentsResponse\"\x00\x12U\n\x0eListActivities\x12\x1f.monorail.ListActivitiesRequest\x1a .monorail.ListActivitiesResponse\"\x00\x12I\n\rDeleteComment\x12\x1e.monorail.DeleteCommentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x13\x42ulkUpdateApprovals\x12$.monorail.BulkUpdateApprovalsRequest\x1a%.monorail.BulkUpdateApprovalsResponse\"\x00\x12U\n\x0eUpdateApproval\x12\x1f.monorail.UpdateApprovalRequest\x1a .monorail.UpdateApprovalResponse\"\x00\x12\x82\x01\n\x1d\x43onvertIssueApprovalsTemplate\x12..monorail.ConvertIssueApprovalsTemplateRequest\x1a/.monorail.ConvertIssueApprovalsTemplateResponse\"\x00\x12R\n\rIssueSnapshot\x12\x1e.monorail.IssueSnapshotRequest\x1a\x1f.monorail.IssueSnapshotResponse\"\x00\x12U\n\x0ePresubmitIssue\x12\x1f.monorail.PresubmitIssueRequest\x1a .monorail.PresubmitIssueResponse\"\x00\x12j\n\x15RerankBlockedOnIssues\x12&.monorail.RerankBlockedOnIssuesRequest\x1a\'.monorail.RerankBlockedOnIssuesResponse\"\x00\x12L\n\x0b\x44\x65leteIssue\x12\x1c.monorail.DeleteIssueRequest\x1a\x1d.monorail.DeleteIssueResponse\"\x00\x12\x61\n\x12\x44\x65leteIssueComment\x12#.monorail.DeleteIssueCommentRequest\x1a$.monorail.DeleteIssueCommentResponse\"\x00\x12[\n\x10\x44\x65leteAttachment\x12!.monorail.DeleteAttachmentRequest\x1a\".monorail.DeleteAttachmentResponse\"\x00\x12I\n\nFlagIssues\x12\x1b.monorail.FlagIssuesRequest\x1a\x1c.monorail.FlagIssuesResponse\"\x00\x12L\n\x0b\x46lagComment\x12\x1c.monorail.FlagCommentRequest\x1a\x1d.monorail.FlagCommentResponse\"\x00\x12g\n\x14ListIssuePermissions\x12%.monorail.ListIssuePermissionsRequest\x1a&.monorail.ListIssuePermissionsResponse\"\x00\x12\x46\n\tMoveIssue\x12\x1a.monorail.MoveIssueRequest\x1a\x1b.monorail.MoveIssueResponse\"\x00\x12\x46\n\tCopyIssue\x12\x1a.monorail.CopyIssueRequest\x1a\x1b.monorail.CopyIssueResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_issue__objects__pb2.DESCRIPTOR,api_dot_api__proto_dot_project__objects__pb2.DESCRIPTOR,])
@@ -36,21 +36,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.CreateIssueRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue', full_name='monorail.CreateIssueRequest.issue', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -74,6 +75,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.GetIssueRequest.issue_ref', index=0,
@@ -81,7 +83,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -105,6 +107,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue', full_name='monorail.IssueResponse.issue', index=0,
@@ -112,14 +115,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='moved_to_ref', full_name='monorail.IssueResponse.moved_to_ref', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -143,49 +146,50 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='query', full_name='monorail.ListIssuesRequest.query', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='canned_query', full_name='monorail.ListIssuesRequest.canned_query', index=1,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='project_names', full_name='monorail.ListIssuesRequest.project_names', index=2,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='pagination', full_name='monorail.ListIssuesRequest.pagination', index=3,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='group_by_spec', full_name='monorail.ListIssuesRequest.group_by_spec', index=4,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sort_spec', full_name='monorail.ListIssuesRequest.sort_spec', index=5,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -209,6 +213,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issues', full_name='monorail.ListIssuesResponse.issues', index=0,
@@ -216,14 +221,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='total_results', full_name='monorail.ListIssuesResponse.total_results', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -247,6 +252,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.ListReferencedIssuesRequest.issue_refs', index=0,
@@ -254,7 +260,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -278,6 +284,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='open_refs', full_name='monorail.ListReferencedIssuesResponse.open_refs', index=0,
@@ -285,14 +292,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='closed_refs', full_name='monorail.ListReferencedIssuesResponse.closed_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -316,6 +323,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.ListApplicableFieldDefsRequest.issue_refs', index=0,
@@ -323,7 +331,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -347,6 +355,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_defs', full_name='monorail.ListApplicableFieldDefsResponse.field_defs', index=0,
@@ -354,7 +363,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -378,6 +387,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.UpdateIssueRequest.issue_ref', index=0,
@@ -385,49 +395,49 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='send_email', full_name='monorail.UpdateIssueRequest.send_email', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='delta', full_name='monorail.UpdateIssueRequest.delta', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comment_content', full_name='monorail.UpdateIssueRequest.comment_content', index=3,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_description', full_name='monorail.UpdateIssueRequest.is_description', index=4,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='uploads', full_name='monorail.UpdateIssueRequest.uploads', index=5,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kept_attachments', full_name='monorail.UpdateIssueRequest.kept_attachments', index=6,
number=8, type=3, cpp_type=2, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -451,6 +461,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.StarIssueRequest.issue_ref', index=0,
@@ -458,14 +469,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='starred', full_name='monorail.StarIssueRequest.starred', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -489,6 +500,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.StarIssueResponse.star_count', index=0,
@@ -496,7 +508,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -520,6 +532,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.IsIssueStarredRequest.issue_ref', index=0,
@@ -527,7 +540,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -551,6 +564,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='is_starred', full_name='monorail.IsIssueStarredResponse.is_starred', index=0,
@@ -558,7 +572,7 @@
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -582,6 +596,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -606,6 +621,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='starred_issue_refs', full_name='monorail.ListStarredIssuesResponse.starred_issue_refs', index=0,
@@ -613,7 +629,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -637,6 +653,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.ListCommentsRequest.issue_ref', index=0,
@@ -644,7 +661,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -668,6 +685,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='comments', full_name='monorail.ListCommentsResponse.comments', index=0,
@@ -675,7 +693,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -699,6 +717,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.ListActivitiesRequest.user_ref', index=0,
@@ -706,21 +725,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='before', full_name='monorail.ListActivitiesRequest.before', index=1,
number=3, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='after', full_name='monorail.ListActivitiesRequest.after', index=2,
number=4, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -744,6 +763,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='comments', full_name='monorail.ListActivitiesResponse.comments', index=0,
@@ -751,14 +771,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_summaries', full_name='monorail.ListActivitiesResponse.issue_summaries', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -782,6 +802,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.DeleteCommentRequest.issue_ref', index=0,
@@ -789,21 +810,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence_num', full_name='monorail.DeleteCommentRequest.sequence_num', index=1,
number=3, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='delete', full_name='monorail.DeleteCommentRequest.delete', index=2,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -827,6 +848,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.BulkUpdateApprovalsRequest.issue_refs', index=0,
@@ -834,35 +856,35 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.BulkUpdateApprovalsRequest.field_ref', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_delta', full_name='monorail.BulkUpdateApprovalsRequest.approval_delta', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comment_content', full_name='monorail.BulkUpdateApprovalsRequest.comment_content', index=3,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='send_email', full_name='monorail.BulkUpdateApprovalsRequest.send_email', index=4,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -886,6 +908,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.BulkUpdateApprovalsResponse.issue_refs', index=0,
@@ -893,7 +916,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -917,6 +940,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.UpdateApprovalRequest.issue_ref', index=0,
@@ -924,56 +948,56 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.UpdateApprovalRequest.field_ref', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_delta', full_name='monorail.UpdateApprovalRequest.approval_delta', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comment_content', full_name='monorail.UpdateApprovalRequest.comment_content', index=3,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='send_email', full_name='monorail.UpdateApprovalRequest.send_email', index=4,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_description', full_name='monorail.UpdateApprovalRequest.is_description', index=5,
number=7, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='uploads', full_name='monorail.UpdateApprovalRequest.uploads', index=6,
number=8, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='kept_attachments', full_name='monorail.UpdateApprovalRequest.kept_attachments', index=7,
number=9, type=3, cpp_type=2, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -997,6 +1021,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='approval', full_name='monorail.UpdateApprovalResponse.approval', index=0,
@@ -1004,7 +1029,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1028,6 +1053,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.ConvertIssueApprovalsTemplateRequest.issue_ref', index=0,
@@ -1035,28 +1061,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='template_name', full_name='monorail.ConvertIssueApprovalsTemplateRequest.template_name', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='comment_content', full_name='monorail.ConvertIssueApprovalsTemplateRequest.comment_content', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='send_email', full_name='monorail.ConvertIssueApprovalsTemplateRequest.send_email', index=3,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1080,6 +1106,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue', full_name='monorail.ConvertIssueApprovalsTemplateResponse.issue', index=0,
@@ -1087,7 +1114,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1111,6 +1138,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='timestamp', full_name='monorail.IssueSnapshotRequest.timestamp', index=0,
@@ -1118,49 +1146,49 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='query', full_name='monorail.IssueSnapshotRequest.query', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='canned_query', full_name='monorail.IssueSnapshotRequest.canned_query', index=2,
number=4, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='group_by', full_name='monorail.IssueSnapshotRequest.group_by', index=3,
number=5, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_prefix', full_name='monorail.IssueSnapshotRequest.label_prefix', index=4,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.IssueSnapshotRequest.project_name', index=5,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='hotlist_id', full_name='monorail.IssueSnapshotRequest.hotlist_id', index=6,
number=8, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1184,21 +1212,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='dimension', full_name='monorail.IssueSnapshotCount.dimension', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='count', full_name='monorail.IssueSnapshotCount.count', index=1,
number=2, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1222,6 +1251,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='snapshot_count', full_name='monorail.IssueSnapshotResponse.snapshot_count', index=0,
@@ -1229,21 +1259,21 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='unsupported_field', full_name='monorail.IssueSnapshotResponse.unsupported_field', index=1,
number=2, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='search_limit_reached', full_name='monorail.IssueSnapshotResponse.search_limit_reached', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1267,6 +1297,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.PresubmitIssueRequest.issue_ref', index=0,
@@ -1274,14 +1305,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='issue_delta', full_name='monorail.PresubmitIssueRequest.issue_delta', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1305,56 +1336,57 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='owner_availability', full_name='monorail.PresubmitIssueResponse.owner_availability', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_availability_state', full_name='monorail.PresubmitIssueResponse.owner_availability_state', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='derived_labels', full_name='monorail.PresubmitIssueResponse.derived_labels', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='derived_owners', full_name='monorail.PresubmitIssueResponse.derived_owners', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='derived_ccs', full_name='monorail.PresubmitIssueResponse.derived_ccs', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='warnings', full_name='monorail.PresubmitIssueResponse.warnings', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='errors', full_name='monorail.PresubmitIssueResponse.errors', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1378,6 +1410,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.RerankBlockedOnIssuesRequest.issue_ref', index=0,
@@ -1385,28 +1418,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='moved_ref', full_name='monorail.RerankBlockedOnIssuesRequest.moved_ref', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='target_ref', full_name='monorail.RerankBlockedOnIssuesRequest.target_ref', index=2,
number=4, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='split_above', full_name='monorail.RerankBlockedOnIssuesRequest.split_above', index=3,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1430,6 +1463,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='blocked_on_issue_refs', full_name='monorail.RerankBlockedOnIssuesResponse.blocked_on_issue_refs', index=0,
@@ -1437,7 +1471,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1461,6 +1495,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.DeleteIssueRequest.issue_ref', index=0,
@@ -1468,14 +1503,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='delete', full_name='monorail.DeleteIssueRequest.delete', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1499,6 +1534,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1523,6 +1559,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.DeleteIssueCommentRequest.issue_ref', index=0,
@@ -1530,21 +1567,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence_num', full_name='monorail.DeleteIssueCommentRequest.sequence_num', index=1,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='delete', full_name='monorail.DeleteIssueCommentRequest.delete', index=2,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1568,6 +1605,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1592,6 +1630,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.DeleteAttachmentRequest.issue_ref', index=0,
@@ -1599,28 +1638,28 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence_num', full_name='monorail.DeleteAttachmentRequest.sequence_num', index=1,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='attachment_id', full_name='monorail.DeleteAttachmentRequest.attachment_id', index=2,
number=4, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='delete', full_name='monorail.DeleteAttachmentRequest.delete', index=3,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1644,6 +1683,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1668,6 +1708,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_refs', full_name='monorail.FlagIssuesRequest.issue_refs', index=0,
@@ -1675,14 +1716,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='flag', full_name='monorail.FlagIssuesRequest.flag', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1706,6 +1747,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1730,6 +1772,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.FlagCommentRequest.issue_ref', index=0,
@@ -1737,21 +1780,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='sequence_num', full_name='monorail.FlagCommentRequest.sequence_num', index=1,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='flag', full_name='monorail.FlagCommentRequest.flag', index=2,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1775,6 +1818,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -1799,6 +1843,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.ListIssuePermissionsRequest.issue_ref', index=0,
@@ -1806,7 +1851,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1830,6 +1875,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='permissions', full_name='monorail.ListIssuePermissionsResponse.permissions', index=0,
@@ -1837,7 +1883,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1861,6 +1907,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.MoveIssueRequest.issue_ref', index=0,
@@ -1868,14 +1915,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='target_project_name', full_name='monorail.MoveIssueRequest.target_project_name', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1899,6 +1946,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='new_issue_ref', full_name='monorail.MoveIssueResponse.new_issue_ref', index=0,
@@ -1906,7 +1954,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1930,6 +1978,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='issue_ref', full_name='monorail.CopyIssueRequest.issue_ref', index=0,
@@ -1937,14 +1986,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='target_project_name', full_name='monorail.CopyIssueRequest.target_project_name', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1968,6 +2017,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='new_issue_ref', full_name='monorail.CopyIssueResponse.new_issue_ref', index=0,
@@ -1975,7 +2025,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -2100,357 +2150,358 @@
DESCRIPTOR.message_types_by_name['CopyIssueResponse'] = _COPYISSUERESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-CreateIssueRequest = _reflection.GeneratedProtocolMessageType('CreateIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _CREATEISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+CreateIssueRequest = _reflection.GeneratedProtocolMessageType('CreateIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CREATEISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.CreateIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(CreateIssueRequest)
-GetIssueRequest = _reflection.GeneratedProtocolMessageType('GetIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+GetIssueRequest = _reflection.GeneratedProtocolMessageType('GetIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(GetIssueRequest)
-IssueResponse = _reflection.GeneratedProtocolMessageType('IssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _ISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+IssueResponse = _reflection.GeneratedProtocolMessageType('IssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueResponse)
- ))
+ })
_sym_db.RegisterMessage(IssueResponse)
-ListIssuesRequest = _reflection.GeneratedProtocolMessageType('ListIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTISSUESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListIssuesRequest = _reflection.GeneratedProtocolMessageType('ListIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTISSUESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListIssuesRequest)
-ListIssuesResponse = _reflection.GeneratedProtocolMessageType('ListIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTISSUESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListIssuesResponse = _reflection.GeneratedProtocolMessageType('ListIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTISSUESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListIssuesResponse)
-ListReferencedIssuesRequest = _reflection.GeneratedProtocolMessageType('ListReferencedIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTREFERENCEDISSUESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListReferencedIssuesRequest = _reflection.GeneratedProtocolMessageType('ListReferencedIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTREFERENCEDISSUESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListReferencedIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListReferencedIssuesRequest)
-ListReferencedIssuesResponse = _reflection.GeneratedProtocolMessageType('ListReferencedIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTREFERENCEDISSUESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListReferencedIssuesResponse = _reflection.GeneratedProtocolMessageType('ListReferencedIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTREFERENCEDISSUESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListReferencedIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListReferencedIssuesResponse)
-ListApplicableFieldDefsRequest = _reflection.GeneratedProtocolMessageType('ListApplicableFieldDefsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTAPPLICABLEFIELDDEFSREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListApplicableFieldDefsRequest = _reflection.GeneratedProtocolMessageType('ListApplicableFieldDefsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTAPPLICABLEFIELDDEFSREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListApplicableFieldDefsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListApplicableFieldDefsRequest)
-ListApplicableFieldDefsResponse = _reflection.GeneratedProtocolMessageType('ListApplicableFieldDefsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTAPPLICABLEFIELDDEFSRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListApplicableFieldDefsResponse = _reflection.GeneratedProtocolMessageType('ListApplicableFieldDefsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTAPPLICABLEFIELDDEFSRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListApplicableFieldDefsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListApplicableFieldDefsResponse)
-UpdateIssueRequest = _reflection.GeneratedProtocolMessageType('UpdateIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _UPDATEISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+UpdateIssueRequest = _reflection.GeneratedProtocolMessageType('UpdateIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.UpdateIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(UpdateIssueRequest)
-StarIssueRequest = _reflection.GeneratedProtocolMessageType('StarIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _STARISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+StarIssueRequest = _reflection.GeneratedProtocolMessageType('StarIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _STARISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(StarIssueRequest)
-StarIssueResponse = _reflection.GeneratedProtocolMessageType('StarIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _STARISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+StarIssueResponse = _reflection.GeneratedProtocolMessageType('StarIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _STARISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(StarIssueResponse)
-IsIssueStarredRequest = _reflection.GeneratedProtocolMessageType('IsIssueStarredRequest', (_message.Message,), dict(
- DESCRIPTOR = _ISISSUESTARREDREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+IsIssueStarredRequest = _reflection.GeneratedProtocolMessageType('IsIssueStarredRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _ISISSUESTARREDREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IsIssueStarredRequest)
- ))
+ })
_sym_db.RegisterMessage(IsIssueStarredRequest)
-IsIssueStarredResponse = _reflection.GeneratedProtocolMessageType('IsIssueStarredResponse', (_message.Message,), dict(
- DESCRIPTOR = _ISISSUESTARREDRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+IsIssueStarredResponse = _reflection.GeneratedProtocolMessageType('IsIssueStarredResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _ISISSUESTARREDRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IsIssueStarredResponse)
- ))
+ })
_sym_db.RegisterMessage(IsIssueStarredResponse)
-ListStarredIssuesRequest = _reflection.GeneratedProtocolMessageType('ListStarredIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTARREDISSUESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListStarredIssuesRequest = _reflection.GeneratedProtocolMessageType('ListStarredIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTARREDISSUESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStarredIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListStarredIssuesRequest)
-ListStarredIssuesResponse = _reflection.GeneratedProtocolMessageType('ListStarredIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTARREDISSUESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListStarredIssuesResponse = _reflection.GeneratedProtocolMessageType('ListStarredIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTARREDISSUESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStarredIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListStarredIssuesResponse)
-ListCommentsRequest = _reflection.GeneratedProtocolMessageType('ListCommentsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTCOMMENTSREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListCommentsRequest = _reflection.GeneratedProtocolMessageType('ListCommentsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTCOMMENTSREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListCommentsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListCommentsRequest)
-ListCommentsResponse = _reflection.GeneratedProtocolMessageType('ListCommentsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTCOMMENTSRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListCommentsResponse = _reflection.GeneratedProtocolMessageType('ListCommentsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTCOMMENTSRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListCommentsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListCommentsResponse)
-ListActivitiesRequest = _reflection.GeneratedProtocolMessageType('ListActivitiesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTACTIVITIESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListActivitiesRequest = _reflection.GeneratedProtocolMessageType('ListActivitiesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTACTIVITIESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListActivitiesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListActivitiesRequest)
-ListActivitiesResponse = _reflection.GeneratedProtocolMessageType('ListActivitiesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTACTIVITIESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListActivitiesResponse = _reflection.GeneratedProtocolMessageType('ListActivitiesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTACTIVITIESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListActivitiesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListActivitiesResponse)
-DeleteCommentRequest = _reflection.GeneratedProtocolMessageType('DeleteCommentRequest', (_message.Message,), dict(
- DESCRIPTOR = _DELETECOMMENTREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteCommentRequest = _reflection.GeneratedProtocolMessageType('DeleteCommentRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETECOMMENTREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteCommentRequest)
- ))
+ })
_sym_db.RegisterMessage(DeleteCommentRequest)
-BulkUpdateApprovalsRequest = _reflection.GeneratedProtocolMessageType('BulkUpdateApprovalsRequest', (_message.Message,), dict(
- DESCRIPTOR = _BULKUPDATEAPPROVALSREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+BulkUpdateApprovalsRequest = _reflection.GeneratedProtocolMessageType('BulkUpdateApprovalsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _BULKUPDATEAPPROVALSREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.BulkUpdateApprovalsRequest)
- ))
+ })
_sym_db.RegisterMessage(BulkUpdateApprovalsRequest)
-BulkUpdateApprovalsResponse = _reflection.GeneratedProtocolMessageType('BulkUpdateApprovalsResponse', (_message.Message,), dict(
- DESCRIPTOR = _BULKUPDATEAPPROVALSRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+BulkUpdateApprovalsResponse = _reflection.GeneratedProtocolMessageType('BulkUpdateApprovalsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _BULKUPDATEAPPROVALSRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.BulkUpdateApprovalsResponse)
- ))
+ })
_sym_db.RegisterMessage(BulkUpdateApprovalsResponse)
-UpdateApprovalRequest = _reflection.GeneratedProtocolMessageType('UpdateApprovalRequest', (_message.Message,), dict(
- DESCRIPTOR = _UPDATEAPPROVALREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+UpdateApprovalRequest = _reflection.GeneratedProtocolMessageType('UpdateApprovalRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEAPPROVALREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.UpdateApprovalRequest)
- ))
+ })
_sym_db.RegisterMessage(UpdateApprovalRequest)
-UpdateApprovalResponse = _reflection.GeneratedProtocolMessageType('UpdateApprovalResponse', (_message.Message,), dict(
- DESCRIPTOR = _UPDATEAPPROVALRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+UpdateApprovalResponse = _reflection.GeneratedProtocolMessageType('UpdateApprovalResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _UPDATEAPPROVALRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.UpdateApprovalResponse)
- ))
+ })
_sym_db.RegisterMessage(UpdateApprovalResponse)
-ConvertIssueApprovalsTemplateRequest = _reflection.GeneratedProtocolMessageType('ConvertIssueApprovalsTemplateRequest', (_message.Message,), dict(
- DESCRIPTOR = _CONVERTISSUEAPPROVALSTEMPLATEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ConvertIssueApprovalsTemplateRequest = _reflection.GeneratedProtocolMessageType('ConvertIssueApprovalsTemplateRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CONVERTISSUEAPPROVALSTEMPLATEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ConvertIssueApprovalsTemplateRequest)
- ))
+ })
_sym_db.RegisterMessage(ConvertIssueApprovalsTemplateRequest)
-ConvertIssueApprovalsTemplateResponse = _reflection.GeneratedProtocolMessageType('ConvertIssueApprovalsTemplateResponse', (_message.Message,), dict(
- DESCRIPTOR = _CONVERTISSUEAPPROVALSTEMPLATERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ConvertIssueApprovalsTemplateResponse = _reflection.GeneratedProtocolMessageType('ConvertIssueApprovalsTemplateResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CONVERTISSUEAPPROVALSTEMPLATERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ConvertIssueApprovalsTemplateResponse)
- ))
+ })
_sym_db.RegisterMessage(ConvertIssueApprovalsTemplateResponse)
-IssueSnapshotRequest = _reflection.GeneratedProtocolMessageType('IssueSnapshotRequest', (_message.Message,), dict(
- DESCRIPTOR = _ISSUESNAPSHOTREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+IssueSnapshotRequest = _reflection.GeneratedProtocolMessageType('IssueSnapshotRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUESNAPSHOTREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueSnapshotRequest)
- ))
+ })
_sym_db.RegisterMessage(IssueSnapshotRequest)
-IssueSnapshotCount = _reflection.GeneratedProtocolMessageType('IssueSnapshotCount', (_message.Message,), dict(
- DESCRIPTOR = _ISSUESNAPSHOTCOUNT,
- __module__ = 'api.api_proto.issues_pb2'
+IssueSnapshotCount = _reflection.GeneratedProtocolMessageType('IssueSnapshotCount', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUESNAPSHOTCOUNT,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueSnapshotCount)
- ))
+ })
_sym_db.RegisterMessage(IssueSnapshotCount)
-IssueSnapshotResponse = _reflection.GeneratedProtocolMessageType('IssueSnapshotResponse', (_message.Message,), dict(
- DESCRIPTOR = _ISSUESNAPSHOTRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+IssueSnapshotResponse = _reflection.GeneratedProtocolMessageType('IssueSnapshotResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _ISSUESNAPSHOTRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.IssueSnapshotResponse)
- ))
+ })
_sym_db.RegisterMessage(IssueSnapshotResponse)
-PresubmitIssueRequest = _reflection.GeneratedProtocolMessageType('PresubmitIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _PRESUBMITISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+PresubmitIssueRequest = _reflection.GeneratedProtocolMessageType('PresubmitIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _PRESUBMITISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.PresubmitIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(PresubmitIssueRequest)
-PresubmitIssueResponse = _reflection.GeneratedProtocolMessageType('PresubmitIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _PRESUBMITISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+PresubmitIssueResponse = _reflection.GeneratedProtocolMessageType('PresubmitIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _PRESUBMITISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.PresubmitIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(PresubmitIssueResponse)
-RerankBlockedOnIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankBlockedOnIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _RERANKBLOCKEDONISSUESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+RerankBlockedOnIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankBlockedOnIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _RERANKBLOCKEDONISSUESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.RerankBlockedOnIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(RerankBlockedOnIssuesRequest)
-RerankBlockedOnIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankBlockedOnIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _RERANKBLOCKEDONISSUESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+RerankBlockedOnIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankBlockedOnIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _RERANKBLOCKEDONISSUESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.RerankBlockedOnIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(RerankBlockedOnIssuesResponse)
-DeleteIssueRequest = _reflection.GeneratedProtocolMessageType('DeleteIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _DELETEISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteIssueRequest = _reflection.GeneratedProtocolMessageType('DeleteIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(DeleteIssueRequest)
-DeleteIssueResponse = _reflection.GeneratedProtocolMessageType('DeleteIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _DELETEISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteIssueResponse = _reflection.GeneratedProtocolMessageType('DeleteIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(DeleteIssueResponse)
-DeleteIssueCommentRequest = _reflection.GeneratedProtocolMessageType('DeleteIssueCommentRequest', (_message.Message,), dict(
- DESCRIPTOR = _DELETEISSUECOMMENTREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteIssueCommentRequest = _reflection.GeneratedProtocolMessageType('DeleteIssueCommentRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEISSUECOMMENTREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteIssueCommentRequest)
- ))
+ })
_sym_db.RegisterMessage(DeleteIssueCommentRequest)
-DeleteIssueCommentResponse = _reflection.GeneratedProtocolMessageType('DeleteIssueCommentResponse', (_message.Message,), dict(
- DESCRIPTOR = _DELETEISSUECOMMENTRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteIssueCommentResponse = _reflection.GeneratedProtocolMessageType('DeleteIssueCommentResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEISSUECOMMENTRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteIssueCommentResponse)
- ))
+ })
_sym_db.RegisterMessage(DeleteIssueCommentResponse)
-DeleteAttachmentRequest = _reflection.GeneratedProtocolMessageType('DeleteAttachmentRequest', (_message.Message,), dict(
- DESCRIPTOR = _DELETEATTACHMENTREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteAttachmentRequest = _reflection.GeneratedProtocolMessageType('DeleteAttachmentRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEATTACHMENTREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteAttachmentRequest)
- ))
+ })
_sym_db.RegisterMessage(DeleteAttachmentRequest)
-DeleteAttachmentResponse = _reflection.GeneratedProtocolMessageType('DeleteAttachmentResponse', (_message.Message,), dict(
- DESCRIPTOR = _DELETEATTACHMENTRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+DeleteAttachmentResponse = _reflection.GeneratedProtocolMessageType('DeleteAttachmentResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _DELETEATTACHMENTRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.DeleteAttachmentResponse)
- ))
+ })
_sym_db.RegisterMessage(DeleteAttachmentResponse)
-FlagIssuesRequest = _reflection.GeneratedProtocolMessageType('FlagIssuesRequest', (_message.Message,), dict(
- DESCRIPTOR = _FLAGISSUESREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+FlagIssuesRequest = _reflection.GeneratedProtocolMessageType('FlagIssuesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _FLAGISSUESREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.FlagIssuesRequest)
- ))
+ })
_sym_db.RegisterMessage(FlagIssuesRequest)
-FlagIssuesResponse = _reflection.GeneratedProtocolMessageType('FlagIssuesResponse', (_message.Message,), dict(
- DESCRIPTOR = _FLAGISSUESRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+FlagIssuesResponse = _reflection.GeneratedProtocolMessageType('FlagIssuesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _FLAGISSUESRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.FlagIssuesResponse)
- ))
+ })
_sym_db.RegisterMessage(FlagIssuesResponse)
-FlagCommentRequest = _reflection.GeneratedProtocolMessageType('FlagCommentRequest', (_message.Message,), dict(
- DESCRIPTOR = _FLAGCOMMENTREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+FlagCommentRequest = _reflection.GeneratedProtocolMessageType('FlagCommentRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _FLAGCOMMENTREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.FlagCommentRequest)
- ))
+ })
_sym_db.RegisterMessage(FlagCommentRequest)
-FlagCommentResponse = _reflection.GeneratedProtocolMessageType('FlagCommentResponse', (_message.Message,), dict(
- DESCRIPTOR = _FLAGCOMMENTRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+FlagCommentResponse = _reflection.GeneratedProtocolMessageType('FlagCommentResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _FLAGCOMMENTRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.FlagCommentResponse)
- ))
+ })
_sym_db.RegisterMessage(FlagCommentResponse)
-ListIssuePermissionsRequest = _reflection.GeneratedProtocolMessageType('ListIssuePermissionsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTISSUEPERMISSIONSREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+ListIssuePermissionsRequest = _reflection.GeneratedProtocolMessageType('ListIssuePermissionsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTISSUEPERMISSIONSREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListIssuePermissionsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListIssuePermissionsRequest)
-ListIssuePermissionsResponse = _reflection.GeneratedProtocolMessageType('ListIssuePermissionsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTISSUEPERMISSIONSRESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+ListIssuePermissionsResponse = _reflection.GeneratedProtocolMessageType('ListIssuePermissionsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTISSUEPERMISSIONSRESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListIssuePermissionsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListIssuePermissionsResponse)
-MoveIssueRequest = _reflection.GeneratedProtocolMessageType('MoveIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _MOVEISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+MoveIssueRequest = _reflection.GeneratedProtocolMessageType('MoveIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _MOVEISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.MoveIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(MoveIssueRequest)
-MoveIssueResponse = _reflection.GeneratedProtocolMessageType('MoveIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _MOVEISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+MoveIssueResponse = _reflection.GeneratedProtocolMessageType('MoveIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _MOVEISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.MoveIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(MoveIssueResponse)
-CopyIssueRequest = _reflection.GeneratedProtocolMessageType('CopyIssueRequest', (_message.Message,), dict(
- DESCRIPTOR = _COPYISSUEREQUEST,
- __module__ = 'api.api_proto.issues_pb2'
+CopyIssueRequest = _reflection.GeneratedProtocolMessageType('CopyIssueRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _COPYISSUEREQUEST,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.CopyIssueRequest)
- ))
+ })
_sym_db.RegisterMessage(CopyIssueRequest)
-CopyIssueResponse = _reflection.GeneratedProtocolMessageType('CopyIssueResponse', (_message.Message,), dict(
- DESCRIPTOR = _COPYISSUERESPONSE,
- __module__ = 'api.api_proto.issues_pb2'
+CopyIssueResponse = _reflection.GeneratedProtocolMessageType('CopyIssueResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _COPYISSUERESPONSE,
+ '__module__' : 'api.api_proto.issues_pb2'
# @@protoc_insertion_point(class_scope:monorail.CopyIssueResponse)
- ))
+ })
_sym_db.RegisterMessage(CopyIssueResponse)
+DESCRIPTOR._options = None
_ISSUES = _descriptor.ServiceDescriptor(
name='Issues',
@@ -2458,6 +2509,7 @@
file=DESCRIPTOR,
index=0,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
serialized_start=4879,
serialized_end=7162,
methods=[
@@ -2469,6 +2521,7 @@
input_type=_CREATEISSUEREQUEST,
output_type=_ISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetIssue',
@@ -2478,6 +2531,7 @@
input_type=_GETISSUEREQUEST,
output_type=_ISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListIssues',
@@ -2487,6 +2541,7 @@
input_type=_LISTISSUESREQUEST,
output_type=_LISTISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListReferencedIssues',
@@ -2496,6 +2551,7 @@
input_type=_LISTREFERENCEDISSUESREQUEST,
output_type=_LISTREFERENCEDISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListApplicableFieldDefs',
@@ -2505,6 +2561,7 @@
input_type=_LISTAPPLICABLEFIELDDEFSREQUEST,
output_type=_LISTAPPLICABLEFIELDDEFSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='UpdateIssue',
@@ -2514,6 +2571,7 @@
input_type=_UPDATEISSUEREQUEST,
output_type=_ISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='StarIssue',
@@ -2523,6 +2581,7 @@
input_type=_STARISSUEREQUEST,
output_type=_STARISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='IsIssueStarred',
@@ -2532,6 +2591,7 @@
input_type=_ISISSUESTARREDREQUEST,
output_type=_ISISSUESTARREDRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListStarredIssues',
@@ -2541,6 +2601,7 @@
input_type=_LISTSTARREDISSUESREQUEST,
output_type=_LISTSTARREDISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListComments',
@@ -2550,6 +2611,7 @@
input_type=_LISTCOMMENTSREQUEST,
output_type=_LISTCOMMENTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListActivities',
@@ -2559,6 +2621,7 @@
input_type=_LISTACTIVITIESREQUEST,
output_type=_LISTACTIVITIESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='DeleteComment',
@@ -2568,6 +2631,7 @@
input_type=_DELETECOMMENTREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='BulkUpdateApprovals',
@@ -2577,6 +2641,7 @@
input_type=_BULKUPDATEAPPROVALSREQUEST,
output_type=_BULKUPDATEAPPROVALSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='UpdateApproval',
@@ -2586,6 +2651,7 @@
input_type=_UPDATEAPPROVALREQUEST,
output_type=_UPDATEAPPROVALRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ConvertIssueApprovalsTemplate',
@@ -2595,6 +2661,7 @@
input_type=_CONVERTISSUEAPPROVALSTEMPLATEREQUEST,
output_type=_CONVERTISSUEAPPROVALSTEMPLATERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='IssueSnapshot',
@@ -2604,6 +2671,7 @@
input_type=_ISSUESNAPSHOTREQUEST,
output_type=_ISSUESNAPSHOTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='PresubmitIssue',
@@ -2613,6 +2681,7 @@
input_type=_PRESUBMITISSUEREQUEST,
output_type=_PRESUBMITISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='RerankBlockedOnIssues',
@@ -2622,6 +2691,7 @@
input_type=_RERANKBLOCKEDONISSUESREQUEST,
output_type=_RERANKBLOCKEDONISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='DeleteIssue',
@@ -2631,6 +2701,7 @@
input_type=_DELETEISSUEREQUEST,
output_type=_DELETEISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='DeleteIssueComment',
@@ -2640,6 +2711,7 @@
input_type=_DELETEISSUECOMMENTREQUEST,
output_type=_DELETEISSUECOMMENTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='DeleteAttachment',
@@ -2649,6 +2721,7 @@
input_type=_DELETEATTACHMENTREQUEST,
output_type=_DELETEATTACHMENTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='FlagIssues',
@@ -2658,6 +2731,7 @@
input_type=_FLAGISSUESREQUEST,
output_type=_FLAGISSUESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='FlagComment',
@@ -2667,6 +2741,7 @@
input_type=_FLAGCOMMENTREQUEST,
output_type=_FLAGCOMMENTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListIssuePermissions',
@@ -2676,6 +2751,7 @@
input_type=_LISTISSUEPERMISSIONSREQUEST,
output_type=_LISTISSUEPERMISSIONSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='MoveIssue',
@@ -2685,6 +2761,7 @@
input_type=_MOVEISSUEREQUEST,
output_type=_MOVEISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CopyIssue',
@@ -2694,6 +2771,7 @@
input_type=_COPYISSUEREQUEST,
output_type=_COPYISSUERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_ISSUES)
diff --git a/api/api_proto/issues_prpc_pb2.py b/api/api_proto/issues_prpc_pb2.py
index 942730d..d0dd0f5 100644
--- a/api/api_proto/issues_prpc_pb2.py
+++ b/api/api_proto/issues_prpc_pb2.py
@@ -10,383 +10,365 @@
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
- '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')))
+ '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'
+ '+N+00hzijv9NK81d8jsole9uKM1deGQUo6M1zLdb/nvM979vqEZ2Q75/j/nUzLSbpPk9K83dLM'
+ '3vWWnuZml+z0pzN0vze1aau6l2z1hp7mZpPmOluZul+YyV5m6W5jNWmrtJmt+PmR3ibpbm931K'
+ 'WN73Y2aHuJul+f2Y2SHuJuCvbbvsZjXy17ZddrMa+WvbLrtZjfy1bZc98m9Qvj/csF324PFQzH'
+ 'zQ2yt/jPn+rw1H+l480YiZz7F7qV2ejZkzpL2sfp617bKXm+pZq372clM9GzOnbXu5qZ6NmWOl'
+ 'vSS6v0NK0qTBpvo7K5a93FR/h2JpdaAQoQ7ZSdXbJ3+C1fuHDcWyD08mlCLDfMPyP2G+X2w4+I'
+ 'ch33+yCnCYxPJT212HWQY/tWIZZhn81HbXYZbBT213HSYZ/Mx212GWwc9sJxtmGfzMdtdhlsHP'
+ 'bHcdpu76cyvNYe6uP7fSHObu+nMrzWHurj+30rxW/heUyn/dUJrXAqn/YlXpiHxtCPleH2600R'
+ 'mBfJBUH+mOkDRfFxppjrA0CRIOFCCkpTnC0nxdaD7Q7pdvRg4eb84Bz7L7cacemlXMfuLgsdAs'
+ 'rfZzN3/McqCgOEJ6N7SfmXoMb9psc6AQIb20GpVvRabe3pwpHnujQOqtoTEBGSWmnrBiGWWxPG'
+ 'GZGmUOnrBiGWUOnghNJxulRn8bZtth0mAnIyjlQJQqDRsWC4UIDbIeGZPvwrq8e0MBjwGpd4VG'
+ 'j4xRXZ4KzS5qjOvylK3LGNflKaxLvwOFCOld1AH5NHLw6xtK8wBuLq00DxAH77fSPMAcvN9ycI'
+ 'A5eL+V5gHm4P1WmgdImh+w0jzA0vyAleYBluYHrDQPsDQ/YKV5UP5myBforizNg7i5tNI8SHX5'
+ 'kJXmQa7Lh2xdDnJdPmSleZDr8iGS5nyCLvQdFn+ZEVdyZpzpbLglnU2KOF2UPvIq0b1QWWq8RX'
+ '1E0Nsz+HgmeIl+faFSypcvjFaqF2wx9dXlQm3soXLlclkVuTz/yyD4rVh4/MyRj8e2H1c5z+jr'
+ '2fcVSqUXYeJZzHf3r3UJ2CNLtKCX4mttqTZ6yBz6UltEWRYqpejIyvnzhWot2h8pYntq0WK+no'
+ '+K5XqhunAROMKrgtUlvBHo3lo8cBNniKbKC6NRk8uKV75DuMxM7J9XTIwJEeUKi8VavVqcXyEL'
+ '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'
+ '/wCQBNJt')))
_INDEX = {
f.name: {
'descriptor': f,
diff --git a/api/api_proto/project_objects.proto b/api/api_proto/project_objects.proto
index a6943ec..4e5344e 100644
--- a/api/api_proto/project_objects.proto
+++ b/api/api_proto/project_objects.proto
@@ -10,6 +10,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "api/api_proto/common.proto";
import "api/api_proto/issue_objects.proto";
diff --git a/api/api_proto/project_objects_pb2.py b/api/api_proto/project_objects_pb2.py
index 580810a..84cb9ed 100644
--- a/api/api_proto/project_objects_pb2.py
+++ b/api/api_proto/project_objects_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/project_objects.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
name='api/api_proto/project_objects.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n#api/api_proto/project_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\"=\n\x07Project\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"d\n\tStatusDef\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nmeans_open\x18\x02 \x01(\x08\x12\x0c\n\x04rank\x18\x03 \x01(\r\x12\x11\n\tdocstring\x18\x04 \x01(\t\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\"@\n\x08LabelDef\x12\r\n\x05label\x18\x01 \x01(\t\x12\x11\n\tdocstring\x18\x03 \x01(\t\x12\x12\n\ndeprecated\x18\x04 \x01(\x08\"\xaa\x02\n\x0c\x43omponentDef\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tdocstring\x18\x02 \x01(\t\x12%\n\nadmin_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12\"\n\x07\x63\x63_refs\x18\x04 \x03(\x0b\x32\x11.monorail.UserRef\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\x07\x12&\n\x0b\x63reator_ref\x18\x07 \x01(\x0b\x32\x11.monorail.UserRef\x12\x10\n\x08modified\x18\x08 \x01(\x07\x12\'\n\x0cmodifier_ref\x18\t \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\nlabel_refs\x18\n \x03(\x0b\x32\x12.monorail.LabelRef\"\xae\x02\n\x08\x46ieldDef\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12\x17\n\x0f\x61pplicable_type\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_niche\x18\x04 \x01(\x08\x12\x16\n\x0eis_multivalued\x18\x05 \x01(\x08\x12\x11\n\tdocstring\x18\x06 \x01(\t\x12%\n\nadmin_refs\x18\x07 \x03(\x0b\x32\x11.monorail.UserRef\x12\x16\n\x0eis_phase_field\x18\x08 \x01(\x08\x12\'\n\x0cuser_choices\x18\t \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\x0c\x65num_choices\x18\n \x03(\x0b\x32\x12.monorail.LabelDef\"[\n\x0c\x46ieldOptions\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12$\n\tuser_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\"n\n\x0b\x41pprovalDef\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12(\n\rapprover_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12\x0e\n\x06survey\x18\x03 \x01(\t\"\xe6\x02\n\x06\x43onfig\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12(\n\x0bstatus_defs\x18\x02 \x03(\x0b\x32\x13.monorail.StatusDef\x12\x31\n\x14statuses_offer_merge\x18\x03 \x03(\x0b\x32\x13.monorail.StatusRef\x12&\n\nlabel_defs\x18\x04 \x03(\x0b\x32\x12.monorail.LabelDef\x12 \n\x18\x65xclusive_label_prefixes\x18\x05 \x03(\t\x12.\n\x0e\x63omponent_defs\x18\x06 \x03(\x0b\x32\x16.monorail.ComponentDef\x12&\n\nfield_defs\x18\x07 \x03(\x0b\x32\x12.monorail.FieldDef\x12,\n\rapproval_defs\x18\x08 \x03(\x0b\x32\x15.monorail.ApprovalDef\x12\x19\n\x11restrict_to_known\x18\t \x01(\x08\"\xb2\x02\n\x12PresentationConfig\x12\x1d\n\x15project_thumbnail_url\x18\x01 \x01(\t\x12\x17\n\x0fproject_summary\x18\x02 \x01(\t\x12\x1e\n\x16\x63ustom_issue_entry_url\x18\x03 \x01(\t\x12\x15\n\rdefault_query\x18\x04 \x01(\t\x12+\n\rsaved_queries\x18\x05 \x03(\x0b\x32\x14.monorail.SavedQuery\x12\x1b\n\x13revision_url_format\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65\x66\x61ult_col_spec\x18\x07 \x01(\t\x12\x19\n\x11\x64\x65\x66\x61ult_sort_spec\x18\x08 \x01(\t\x12\x16\n\x0e\x64\x65\x66\x61ult_x_attr\x18\t \x01(\t\x12\x16\n\x0e\x64\x65\x66\x61ult_y_attr\x18\n \x01(\t\"\x85\x04\n\x0bTemplateDef\x12\x15\n\rtemplate_name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x1e\n\x16summary_must_be_edited\x18\x04 \x01(\x08\x12$\n\towner_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\'\n\nstatus_ref\x18\x06 \x01(\x0b\x32\x13.monorail.StatusRef\x12&\n\nlabel_refs\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12\x14\n\x0cmembers_only\x18\x08 \x01(\x08\x12 \n\x18owner_defaults_to_member\x18\t \x01(\x08\x12%\n\nadmin_refs\x18\n \x03(\x0b\x32\x11.monorail.UserRef\x12*\n\x0c\x66ield_values\x18\x0b \x03(\x0b\x32\x14.monorail.FieldValue\x12.\n\x0e\x63omponent_refs\x18\x0c \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x1a\n\x12\x63omponent_required\x18\r \x01(\x08\x12+\n\x0f\x61pproval_values\x18\x0e \x03(\x0b\x32\x12.monorail.Approval\x12\"\n\x06phases\x18\x0f \x03(\x0b\x32\x12.monorail.PhaseDefb\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n#api/api_proto/project_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a!api/api_proto/issue_objects.proto\"=\n\x07Project\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"d\n\tStatusDef\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nmeans_open\x18\x02 \x01(\x08\x12\x0c\n\x04rank\x18\x03 \x01(\r\x12\x11\n\tdocstring\x18\x04 \x01(\t\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\"@\n\x08LabelDef\x12\r\n\x05label\x18\x01 \x01(\t\x12\x11\n\tdocstring\x18\x03 \x01(\t\x12\x12\n\ndeprecated\x18\x04 \x01(\x08\"\xaa\x02\n\x0c\x43omponentDef\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x11\n\tdocstring\x18\x02 \x01(\t\x12%\n\nadmin_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\x12\"\n\x07\x63\x63_refs\x18\x04 \x03(\x0b\x32\x11.monorail.UserRef\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\x07\x12&\n\x0b\x63reator_ref\x18\x07 \x01(\x0b\x32\x11.monorail.UserRef\x12\x10\n\x08modified\x18\x08 \x01(\x07\x12\'\n\x0cmodifier_ref\x18\t \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\nlabel_refs\x18\n \x03(\x0b\x32\x12.monorail.LabelRef\"\xae\x02\n\x08\x46ieldDef\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12\x17\n\x0f\x61pplicable_type\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_niche\x18\x04 \x01(\x08\x12\x16\n\x0eis_multivalued\x18\x05 \x01(\x08\x12\x11\n\tdocstring\x18\x06 \x01(\t\x12%\n\nadmin_refs\x18\x07 \x03(\x0b\x32\x11.monorail.UserRef\x12\x16\n\x0eis_phase_field\x18\x08 \x01(\x08\x12\'\n\x0cuser_choices\x18\t \x03(\x0b\x32\x11.monorail.UserRef\x12(\n\x0c\x65num_choices\x18\n \x03(\x0b\x32\x12.monorail.LabelDef\"[\n\x0c\x46ieldOptions\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12$\n\tuser_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\"n\n\x0b\x41pprovalDef\x12%\n\tfield_ref\x18\x01 \x01(\x0b\x32\x12.monorail.FieldRef\x12(\n\rapprover_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\x12\x0e\n\x06survey\x18\x03 \x01(\t\"\xe6\x02\n\x06\x43onfig\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12(\n\x0bstatus_defs\x18\x02 \x03(\x0b\x32\x13.monorail.StatusDef\x12\x31\n\x14statuses_offer_merge\x18\x03 \x03(\x0b\x32\x13.monorail.StatusRef\x12&\n\nlabel_defs\x18\x04 \x03(\x0b\x32\x12.monorail.LabelDef\x12 \n\x18\x65xclusive_label_prefixes\x18\x05 \x03(\t\x12.\n\x0e\x63omponent_defs\x18\x06 \x03(\x0b\x32\x16.monorail.ComponentDef\x12&\n\nfield_defs\x18\x07 \x03(\x0b\x32\x12.monorail.FieldDef\x12,\n\rapproval_defs\x18\x08 \x03(\x0b\x32\x15.monorail.ApprovalDef\x12\x19\n\x11restrict_to_known\x18\t \x01(\x08\"\xb2\x02\n\x12PresentationConfig\x12\x1d\n\x15project_thumbnail_url\x18\x01 \x01(\t\x12\x17\n\x0fproject_summary\x18\x02 \x01(\t\x12\x1e\n\x16\x63ustom_issue_entry_url\x18\x03 \x01(\t\x12\x15\n\rdefault_query\x18\x04 \x01(\t\x12+\n\rsaved_queries\x18\x05 \x03(\x0b\x32\x14.monorail.SavedQuery\x12\x1b\n\x13revision_url_format\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65\x66\x61ult_col_spec\x18\x07 \x01(\t\x12\x19\n\x11\x64\x65\x66\x61ult_sort_spec\x18\x08 \x01(\t\x12\x16\n\x0e\x64\x65\x66\x61ult_x_attr\x18\t \x01(\t\x12\x16\n\x0e\x64\x65\x66\x61ult_y_attr\x18\n \x01(\t\"\x85\x04\n\x0bTemplateDef\x12\x15\n\rtemplate_name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x1e\n\x16summary_must_be_edited\x18\x04 \x01(\x08\x12$\n\towner_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12\'\n\nstatus_ref\x18\x06 \x01(\x0b\x32\x13.monorail.StatusRef\x12&\n\nlabel_refs\x18\x07 \x03(\x0b\x32\x12.monorail.LabelRef\x12\x14\n\x0cmembers_only\x18\x08 \x01(\x08\x12 \n\x18owner_defaults_to_member\x18\t \x01(\x08\x12%\n\nadmin_refs\x18\n \x03(\x0b\x32\x11.monorail.UserRef\x12*\n\x0c\x66ield_values\x18\x0b \x03(\x0b\x32\x14.monorail.FieldValue\x12.\n\x0e\x63omponent_refs\x18\x0c \x03(\x0b\x32\x16.monorail.ComponentRef\x12\x1a\n\x12\x63omponent_required\x18\r \x01(\x08\x12+\n\x0f\x61pproval_values\x18\x0e \x03(\x0b\x32\x12.monorail.Approval\x12\"\n\x06phases\x18\x0f \x03(\x0b\x32\x12.monorail.PhaseDefB)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_issue__objects__pb2.DESCRIPTOR,])
@@ -34,28 +34,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='monorail.Project.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.Project.summary', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='description', full_name='monorail.Project.description', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -79,42 +80,43 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='status', full_name='monorail.StatusDef.status', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='means_open', full_name='monorail.StatusDef.means_open', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='rank', full_name='monorail.StatusDef.rank', index=2,
number=3, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='docstring', full_name='monorail.StatusDef.docstring', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deprecated', full_name='monorail.StatusDef.deprecated', index=4,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -138,28 +140,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='label', full_name='monorail.LabelDef.label', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='docstring', full_name='monorail.LabelDef.docstring', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deprecated', full_name='monorail.LabelDef.deprecated', index=2,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -183,77 +186,78 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='path', full_name='monorail.ComponentDef.path', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='docstring', full_name='monorail.ComponentDef.docstring', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='admin_refs', full_name='monorail.ComponentDef.admin_refs', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='cc_refs', full_name='monorail.ComponentDef.cc_refs', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='deprecated', full_name='monorail.ComponentDef.deprecated', index=4,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='created', full_name='monorail.ComponentDef.created', index=5,
number=6, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='creator_ref', full_name='monorail.ComponentDef.creator_ref', index=6,
number=7, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='modified', full_name='monorail.ComponentDef.modified', index=7,
number=8, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='modifier_ref', full_name='monorail.ComponentDef.modifier_ref', index=8,
number=9, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_refs', full_name='monorail.ComponentDef.label_refs', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -277,6 +281,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.FieldDef.field_ref', index=0,
@@ -284,70 +289,70 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='applicable_type', full_name='monorail.FieldDef.applicable_type', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_required', full_name='monorail.FieldDef.is_required', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_niche', full_name='monorail.FieldDef.is_niche', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_multivalued', full_name='monorail.FieldDef.is_multivalued', index=4,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='docstring', full_name='monorail.FieldDef.docstring', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='admin_refs', full_name='monorail.FieldDef.admin_refs', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_phase_field', full_name='monorail.FieldDef.is_phase_field', index=7,
number=8, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='user_choices', full_name='monorail.FieldDef.user_choices', index=8,
number=9, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='enum_choices', full_name='monorail.FieldDef.enum_choices', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -371,6 +376,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.FieldOptions.field_ref', index=0,
@@ -378,14 +384,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='user_refs', full_name='monorail.FieldOptions.user_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -409,6 +415,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_ref', full_name='monorail.ApprovalDef.field_ref', index=0,
@@ -416,21 +423,21 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approver_refs', full_name='monorail.ApprovalDef.approver_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='survey', full_name='monorail.ApprovalDef.survey', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -454,70 +461,71 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.Config.project_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='status_defs', full_name='monorail.Config.status_defs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='statuses_offer_merge', full_name='monorail.Config.statuses_offer_merge', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_defs', full_name='monorail.Config.label_defs', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='exclusive_label_prefixes', full_name='monorail.Config.exclusive_label_prefixes', index=4,
number=5, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_defs', full_name='monorail.Config.component_defs', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_defs', full_name='monorail.Config.field_defs', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_defs', full_name='monorail.Config.approval_defs', index=7,
number=8, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='restrict_to_known', full_name='monorail.Config.restrict_to_known', index=8,
number=9, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -541,77 +549,78 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_thumbnail_url', full_name='monorail.PresentationConfig.project_thumbnail_url', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='project_summary', full_name='monorail.PresentationConfig.project_summary', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='custom_issue_entry_url', full_name='monorail.PresentationConfig.custom_issue_entry_url', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_query', full_name='monorail.PresentationConfig.default_query', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='saved_queries', full_name='monorail.PresentationConfig.saved_queries', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='revision_url_format', full_name='monorail.PresentationConfig.revision_url_format', index=5,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_col_spec', full_name='monorail.PresentationConfig.default_col_spec', index=6,
number=7, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_sort_spec', full_name='monorail.PresentationConfig.default_sort_spec', index=7,
number=8, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_x_attr', full_name='monorail.PresentationConfig.default_x_attr', index=8,
number=9, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='default_y_attr', full_name='monorail.PresentationConfig.default_y_attr', index=9,
number=10, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -635,112 +644,113 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='template_name', full_name='monorail.TemplateDef.template_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='content', full_name='monorail.TemplateDef.content', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary', full_name='monorail.TemplateDef.summary', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='summary_must_be_edited', full_name='monorail.TemplateDef.summary_must_be_edited', index=3,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_ref', full_name='monorail.TemplateDef.owner_ref', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='status_ref', full_name='monorail.TemplateDef.status_ref', index=5,
number=6, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='label_refs', full_name='monorail.TemplateDef.label_refs', index=6,
number=7, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='members_only', full_name='monorail.TemplateDef.members_only', index=7,
number=8, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_defaults_to_member', full_name='monorail.TemplateDef.owner_defaults_to_member', index=8,
number=9, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='admin_refs', full_name='monorail.TemplateDef.admin_refs', index=9,
number=10, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_values', full_name='monorail.TemplateDef.field_values', index=10,
number=11, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_refs', full_name='monorail.TemplateDef.component_refs', index=11,
number=12, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_required', full_name='monorail.TemplateDef.component_required', index=12,
number=13, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='approval_values', full_name='monorail.TemplateDef.approval_values', index=13,
number=14, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='phases', full_name='monorail.TemplateDef.phases', index=14,
number=15, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -797,75 +807,76 @@
DESCRIPTOR.message_types_by_name['TemplateDef'] = _TEMPLATEDEF
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-Project = _reflection.GeneratedProtocolMessageType('Project', (_message.Message,), dict(
- DESCRIPTOR = _PROJECT,
- __module__ = 'api.api_proto.project_objects_pb2'
+Project = _reflection.GeneratedProtocolMessageType('Project', (_message.Message,), {
+ 'DESCRIPTOR' : _PROJECT,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Project)
- ))
+ })
_sym_db.RegisterMessage(Project)
-StatusDef = _reflection.GeneratedProtocolMessageType('StatusDef', (_message.Message,), dict(
- DESCRIPTOR = _STATUSDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+StatusDef = _reflection.GeneratedProtocolMessageType('StatusDef', (_message.Message,), {
+ 'DESCRIPTOR' : _STATUSDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.StatusDef)
- ))
+ })
_sym_db.RegisterMessage(StatusDef)
-LabelDef = _reflection.GeneratedProtocolMessageType('LabelDef', (_message.Message,), dict(
- DESCRIPTOR = _LABELDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+LabelDef = _reflection.GeneratedProtocolMessageType('LabelDef', (_message.Message,), {
+ 'DESCRIPTOR' : _LABELDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.LabelDef)
- ))
+ })
_sym_db.RegisterMessage(LabelDef)
-ComponentDef = _reflection.GeneratedProtocolMessageType('ComponentDef', (_message.Message,), dict(
- DESCRIPTOR = _COMPONENTDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+ComponentDef = _reflection.GeneratedProtocolMessageType('ComponentDef', (_message.Message,), {
+ 'DESCRIPTOR' : _COMPONENTDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ComponentDef)
- ))
+ })
_sym_db.RegisterMessage(ComponentDef)
-FieldDef = _reflection.GeneratedProtocolMessageType('FieldDef', (_message.Message,), dict(
- DESCRIPTOR = _FIELDDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+FieldDef = _reflection.GeneratedProtocolMessageType('FieldDef', (_message.Message,), {
+ 'DESCRIPTOR' : _FIELDDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.FieldDef)
- ))
+ })
_sym_db.RegisterMessage(FieldDef)
-FieldOptions = _reflection.GeneratedProtocolMessageType('FieldOptions', (_message.Message,), dict(
- DESCRIPTOR = _FIELDOPTIONS,
- __module__ = 'api.api_proto.project_objects_pb2'
+FieldOptions = _reflection.GeneratedProtocolMessageType('FieldOptions', (_message.Message,), {
+ 'DESCRIPTOR' : _FIELDOPTIONS,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.FieldOptions)
- ))
+ })
_sym_db.RegisterMessage(FieldOptions)
-ApprovalDef = _reflection.GeneratedProtocolMessageType('ApprovalDef', (_message.Message,), dict(
- DESCRIPTOR = _APPROVALDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+ApprovalDef = _reflection.GeneratedProtocolMessageType('ApprovalDef', (_message.Message,), {
+ 'DESCRIPTOR' : _APPROVALDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ApprovalDef)
- ))
+ })
_sym_db.RegisterMessage(ApprovalDef)
-Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), dict(
- DESCRIPTOR = _CONFIG,
- __module__ = 'api.api_proto.project_objects_pb2'
+Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), {
+ 'DESCRIPTOR' : _CONFIG,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.Config)
- ))
+ })
_sym_db.RegisterMessage(Config)
-PresentationConfig = _reflection.GeneratedProtocolMessageType('PresentationConfig', (_message.Message,), dict(
- DESCRIPTOR = _PRESENTATIONCONFIG,
- __module__ = 'api.api_proto.project_objects_pb2'
+PresentationConfig = _reflection.GeneratedProtocolMessageType('PresentationConfig', (_message.Message,), {
+ 'DESCRIPTOR' : _PRESENTATIONCONFIG,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.PresentationConfig)
- ))
+ })
_sym_db.RegisterMessage(PresentationConfig)
-TemplateDef = _reflection.GeneratedProtocolMessageType('TemplateDef', (_message.Message,), dict(
- DESCRIPTOR = _TEMPLATEDEF,
- __module__ = 'api.api_proto.project_objects_pb2'
+TemplateDef = _reflection.GeneratedProtocolMessageType('TemplateDef', (_message.Message,), {
+ 'DESCRIPTOR' : _TEMPLATEDEF,
+ '__module__' : 'api.api_proto.project_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.TemplateDef)
- ))
+ })
_sym_db.RegisterMessage(TemplateDef)
+DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/api/api_proto/projects.proto b/api/api_proto/projects.proto
index bcd1167..4171913 100644
--- a/api/api_proto/projects.proto
+++ b/api/api_proto/projects.proto
@@ -8,6 +8,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "api/api_proto/common.proto";
import "api/api_proto/project_objects.proto";
diff --git a/api/api_proto/projects_pb2.py b/api/api_proto/projects_pb2.py
index fa8a3fc..c9cd3c4 100644
--- a/api/api_proto/projects_pb2.py
+++ b/api/api_proto/projects_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/projects.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
name='api/api_proto/projects.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x1c\x61pi/api_proto/projects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a#api/api_proto/project_objects.proto\"<\n\x13ListProjectsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"T\n\x14ListProjectsResponse\x12#\n\x08projects\x18\x01 \x03(\x0b\x32\x11.monorail.Project\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"3\n\x1bListProjectTemplatesRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"H\n\x1cListProjectTemplatesResponse\x12(\n\ttemplates\x18\x01 \x03(\x0b\x32\x15.monorail.TemplateDef\"(\n\x10GetConfigRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"4\n\x1cGetPresentationConfigRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"3\n\x1bGetCustomPermissionsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"3\n\x1cGetCustomPermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t\"0\n\x18GetVisibleMembersRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"h\n\x19GetVisibleMembersResponse\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\x12%\n\ngroup_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\".\n\x16GetLabelOptionsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"f\n\x17GetLabelOptionsResponse\x12)\n\rlabel_options\x18\x01 \x03(\x0b\x32\x12.monorail.LabelDef\x12 \n\x18\x65xclusive_label_prefixes\x18\x02 \x03(\t\"+\n\x13ListStatusesRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"\x8e\x01\n\x14ListStatusesResponse\x12(\n\x0bstatus_defs\x18\x01 \x03(\x0b\x32\x13.monorail.StatusDef\x12\x31\n\x14statuses_offer_merge\x18\x02 \x03(\x0b\x32\x13.monorail.StatusRef\x12\x19\n\x11restrict_to_known\x18\x03 \x01(\x08\"I\n\x15ListComponentsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1a\n\x12include_admin_info\x18\x03 \x01(\x08\"H\n\x16ListComponentsResponse\x12.\n\x0e\x63omponent_defs\x18\x01 \x03(\x0b\x32\x16.monorail.ComponentDef\"c\n\x11ListFieldsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1a\n\x12include_admin_info\x18\x03 \x01(\x08\x12\x1c\n\x14include_user_choices\x18\x04 \x01(\x08\"<\n\x12ListFieldsResponse\x12&\n\nfield_defs\x18\x01 \x03(\x0b\x32\x12.monorail.FieldDef\"2\n\x1aGetProjectStarCountRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"1\n\x1bGetProjectStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\";\n\x12StarProjectRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarProjectResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"/\n\x17\x43heckProjectNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\")\n\x18\x43heckProjectNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"^\n\x19\x43heckComponentNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x13\n\x0bparent_path\x18\x03 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x04 \x01(\t\"+\n\x1a\x43heckComponentNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"A\n\x15\x43heckFieldNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x12\n\nfield_name\x18\x03 \x01(\t\"\'\n\x16\x43heckFieldNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t2\xc3\n\n\x08Projects\x12O\n\x0cListProjects\x12\x1d.monorail.ListProjectsRequest\x1a\x1e.monorail.ListProjectsResponse\"\x00\x12g\n\x14ListProjectTemplates\x12%.monorail.ListProjectTemplatesRequest\x1a&.monorail.ListProjectTemplatesResponse\"\x00\x12;\n\tGetConfig\x12\x1a.monorail.GetConfigRequest\x1a\x10.monorail.Config\"\x00\x12_\n\x15GetPresentationConfig\x12&.monorail.GetPresentationConfigRequest\x1a\x1c.monorail.PresentationConfig\"\x00\x12g\n\x14GetCustomPermissions\x12%.monorail.GetCustomPermissionsRequest\x1a&.monorail.GetCustomPermissionsResponse\"\x00\x12^\n\x11GetVisibleMembers\x12\".monorail.GetVisibleMembersRequest\x1a#.monorail.GetVisibleMembersResponse\"\x00\x12X\n\x0fGetLabelOptions\x12 .monorail.GetLabelOptionsRequest\x1a!.monorail.GetLabelOptionsResponse\"\x00\x12O\n\x0cListStatuses\x12\x1d.monorail.ListStatusesRequest\x1a\x1e.monorail.ListStatusesResponse\"\x00\x12U\n\x0eListComponents\x12\x1f.monorail.ListComponentsRequest\x1a .monorail.ListComponentsResponse\"\x00\x12I\n\nListFields\x12\x1b.monorail.ListFieldsRequest\x1a\x1c.monorail.ListFieldsResponse\"\x00\x12\x64\n\x13GetProjectStarCount\x12$.monorail.GetProjectStarCountRequest\x1a%.monorail.GetProjectStarCountResponse\"\x00\x12L\n\x0bStarProject\x12\x1c.monorail.StarProjectRequest\x1a\x1d.monorail.StarProjectResponse\"\x00\x12[\n\x10\x43heckProjectName\x12!.monorail.CheckProjectNameRequest\x1a\".monorail.CheckProjectNameResponse\"\x00\x12\x61\n\x12\x43heckComponentName\x12#.monorail.CheckComponentNameRequest\x1a$.monorail.CheckComponentNameResponse\"\x00\x12U\n\x0e\x43heckFieldName\x12\x1f.monorail.CheckFieldNameRequest\x1a .monorail.CheckFieldNameResponse\"\x00\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x1c\x61pi/api_proto/projects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a#api/api_proto/project_objects.proto\"<\n\x13ListProjectsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"T\n\x14ListProjectsResponse\x12#\n\x08projects\x18\x01 \x03(\x0b\x32\x11.monorail.Project\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"3\n\x1bListProjectTemplatesRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"H\n\x1cListProjectTemplatesResponse\x12(\n\ttemplates\x18\x01 \x03(\x0b\x32\x15.monorail.TemplateDef\"(\n\x10GetConfigRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"4\n\x1cGetPresentationConfigRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"3\n\x1bGetCustomPermissionsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"3\n\x1cGetCustomPermissionsResponse\x12\x13\n\x0bpermissions\x18\x01 \x03(\t\"0\n\x18GetVisibleMembersRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"h\n\x19GetVisibleMembersResponse\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\x12%\n\ngroup_refs\x18\x02 \x03(\x0b\x32\x11.monorail.UserRef\".\n\x16GetLabelOptionsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"f\n\x17GetLabelOptionsResponse\x12)\n\rlabel_options\x18\x01 \x03(\x0b\x32\x12.monorail.LabelDef\x12 \n\x18\x65xclusive_label_prefixes\x18\x02 \x03(\t\"+\n\x13ListStatusesRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"\x8e\x01\n\x14ListStatusesResponse\x12(\n\x0bstatus_defs\x18\x01 \x03(\x0b\x32\x13.monorail.StatusDef\x12\x31\n\x14statuses_offer_merge\x18\x02 \x03(\x0b\x32\x13.monorail.StatusRef\x12\x19\n\x11restrict_to_known\x18\x03 \x01(\x08\"I\n\x15ListComponentsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1a\n\x12include_admin_info\x18\x03 \x01(\x08\"H\n\x16ListComponentsResponse\x12.\n\x0e\x63omponent_defs\x18\x01 \x03(\x0b\x32\x16.monorail.ComponentDef\"c\n\x11ListFieldsRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x1a\n\x12include_admin_info\x18\x03 \x01(\x08\x12\x1c\n\x14include_user_choices\x18\x04 \x01(\x08\"<\n\x12ListFieldsResponse\x12&\n\nfield_defs\x18\x01 \x03(\x0b\x32\x12.monorail.FieldDef\"2\n\x1aGetProjectStarCountRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\"1\n\x1bGetProjectStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\";\n\x12StarProjectRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarProjectResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"/\n\x17\x43heckProjectNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\")\n\x18\x43heckProjectNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"^\n\x19\x43heckComponentNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x13\n\x0bparent_path\x18\x03 \x01(\t\x12\x16\n\x0e\x63omponent_name\x18\x04 \x01(\t\"+\n\x1a\x43heckComponentNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"A\n\x15\x43heckFieldNameRequest\x12\x14\n\x0cproject_name\x18\x02 \x01(\t\x12\x12\n\nfield_name\x18\x03 \x01(\t\"\'\n\x16\x43heckFieldNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t2\xc3\n\n\x08Projects\x12O\n\x0cListProjects\x12\x1d.monorail.ListProjectsRequest\x1a\x1e.monorail.ListProjectsResponse\"\x00\x12g\n\x14ListProjectTemplates\x12%.monorail.ListProjectTemplatesRequest\x1a&.monorail.ListProjectTemplatesResponse\"\x00\x12;\n\tGetConfig\x12\x1a.monorail.GetConfigRequest\x1a\x10.monorail.Config\"\x00\x12_\n\x15GetPresentationConfig\x12&.monorail.GetPresentationConfigRequest\x1a\x1c.monorail.PresentationConfig\"\x00\x12g\n\x14GetCustomPermissions\x12%.monorail.GetCustomPermissionsRequest\x1a&.monorail.GetCustomPermissionsResponse\"\x00\x12^\n\x11GetVisibleMembers\x12\".monorail.GetVisibleMembersRequest\x1a#.monorail.GetVisibleMembersResponse\"\x00\x12X\n\x0fGetLabelOptions\x12 .monorail.GetLabelOptionsRequest\x1a!.monorail.GetLabelOptionsResponse\"\x00\x12O\n\x0cListStatuses\x12\x1d.monorail.ListStatusesRequest\x1a\x1e.monorail.ListStatusesResponse\"\x00\x12U\n\x0eListComponents\x12\x1f.monorail.ListComponentsRequest\x1a .monorail.ListComponentsResponse\"\x00\x12I\n\nListFields\x12\x1b.monorail.ListFieldsRequest\x1a\x1c.monorail.ListFieldsResponse\"\x00\x12\x64\n\x13GetProjectStarCount\x12$.monorail.GetProjectStarCountRequest\x1a%.monorail.GetProjectStarCountResponse\"\x00\x12L\n\x0bStarProject\x12\x1c.monorail.StarProjectRequest\x1a\x1d.monorail.StarProjectResponse\"\x00\x12[\n\x10\x43heckProjectName\x12!.monorail.CheckProjectNameRequest\x1a\".monorail.CheckProjectNameResponse\"\x00\x12\x61\n\x12\x43heckComponentName\x12#.monorail.CheckComponentNameRequest\x1a$.monorail.CheckComponentNameResponse\"\x00\x12U\n\x0e\x43heckFieldName\x12\x1f.monorail.CheckFieldNameRequest\x1a .monorail.CheckFieldNameResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_project__objects__pb2.DESCRIPTOR,])
@@ -34,6 +34,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='page_size', full_name='monorail.ListProjectsRequest.page_size', index=0,
@@ -41,14 +42,14 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='page_token', full_name='monorail.ListProjectsRequest.page_token', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -72,6 +73,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='projects', full_name='monorail.ListProjectsResponse.projects', index=0,
@@ -79,14 +81,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='next_page_token', full_name='monorail.ListProjectsResponse.next_page_token', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -110,14 +112,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.ListProjectTemplatesRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -141,6 +144,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='templates', full_name='monorail.ListProjectTemplatesResponse.templates', index=0,
@@ -148,7 +152,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -172,14 +176,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetConfigRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -203,14 +208,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetPresentationConfigRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -234,14 +240,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetCustomPermissionsRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -265,6 +272,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='permissions', full_name='monorail.GetCustomPermissionsResponse.permissions', index=0,
@@ -272,7 +280,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -296,14 +304,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetVisibleMembersRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -327,6 +336,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_refs', full_name='monorail.GetVisibleMembersResponse.user_refs', index=0,
@@ -334,14 +344,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='group_refs', full_name='monorail.GetVisibleMembersResponse.group_refs', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -365,14 +375,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetLabelOptionsRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -396,6 +407,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='label_options', full_name='monorail.GetLabelOptionsResponse.label_options', index=0,
@@ -403,14 +415,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='exclusive_label_prefixes', full_name='monorail.GetLabelOptionsResponse.exclusive_label_prefixes', index=1,
number=2, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -434,14 +446,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.ListStatusesRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -465,6 +478,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='status_defs', full_name='monorail.ListStatusesResponse.status_defs', index=0,
@@ -472,21 +486,21 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='statuses_offer_merge', full_name='monorail.ListStatusesResponse.statuses_offer_merge', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='restrict_to_known', full_name='monorail.ListStatusesResponse.restrict_to_known', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -510,21 +524,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.ListComponentsRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='include_admin_info', full_name='monorail.ListComponentsRequest.include_admin_info', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -548,6 +563,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='component_defs', full_name='monorail.ListComponentsResponse.component_defs', index=0,
@@ -555,7 +571,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -579,28 +595,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.ListFieldsRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='include_admin_info', full_name='monorail.ListFieldsRequest.include_admin_info', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='include_user_choices', full_name='monorail.ListFieldsRequest.include_user_choices', index=2,
number=4, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -624,6 +641,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='field_defs', full_name='monorail.ListFieldsResponse.field_defs', index=0,
@@ -631,7 +649,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -655,14 +673,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.GetProjectStarCountRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -686,6 +705,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.GetProjectStarCountResponse.star_count', index=0,
@@ -693,7 +713,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -717,21 +737,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.StarProjectRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='starred', full_name='monorail.StarProjectRequest.starred', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -755,6 +776,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.StarProjectResponse.star_count', index=0,
@@ -762,7 +784,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -786,14 +808,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.CheckProjectNameRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -817,14 +840,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='error', full_name='monorail.CheckProjectNameResponse.error', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -848,28 +872,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.CheckComponentNameRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='parent_path', full_name='monorail.CheckComponentNameRequest.parent_path', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='component_name', full_name='monorail.CheckComponentNameRequest.component_name', index=2,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -893,14 +918,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='error', full_name='monorail.CheckComponentNameResponse.error', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -924,21 +950,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='project_name', full_name='monorail.CheckFieldNameRequest.project_name', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='field_name', full_name='monorail.CheckFieldNameRequest.field_name', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -962,14 +989,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='error', full_name='monorail.CheckFieldNameResponse.error', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -1025,203 +1053,204 @@
DESCRIPTOR.message_types_by_name['CheckFieldNameResponse'] = _CHECKFIELDNAMERESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-ListProjectsRequest = _reflection.GeneratedProtocolMessageType('ListProjectsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTPROJECTSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+ListProjectsRequest = _reflection.GeneratedProtocolMessageType('ListProjectsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTPROJECTSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListProjectsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListProjectsRequest)
-ListProjectsResponse = _reflection.GeneratedProtocolMessageType('ListProjectsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTPROJECTSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+ListProjectsResponse = _reflection.GeneratedProtocolMessageType('ListProjectsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTPROJECTSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListProjectsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListProjectsResponse)
-ListProjectTemplatesRequest = _reflection.GeneratedProtocolMessageType('ListProjectTemplatesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTPROJECTTEMPLATESREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+ListProjectTemplatesRequest = _reflection.GeneratedProtocolMessageType('ListProjectTemplatesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTPROJECTTEMPLATESREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListProjectTemplatesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListProjectTemplatesRequest)
-ListProjectTemplatesResponse = _reflection.GeneratedProtocolMessageType('ListProjectTemplatesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTPROJECTTEMPLATESRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+ListProjectTemplatesResponse = _reflection.GeneratedProtocolMessageType('ListProjectTemplatesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTPROJECTTEMPLATESRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListProjectTemplatesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListProjectTemplatesResponse)
-GetConfigRequest = _reflection.GeneratedProtocolMessageType('GetConfigRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETCONFIGREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetConfigRequest = _reflection.GeneratedProtocolMessageType('GetConfigRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETCONFIGREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetConfigRequest)
- ))
+ })
_sym_db.RegisterMessage(GetConfigRequest)
-GetPresentationConfigRequest = _reflection.GeneratedProtocolMessageType('GetPresentationConfigRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETPRESENTATIONCONFIGREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetPresentationConfigRequest = _reflection.GeneratedProtocolMessageType('GetPresentationConfigRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETPRESENTATIONCONFIGREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetPresentationConfigRequest)
- ))
+ })
_sym_db.RegisterMessage(GetPresentationConfigRequest)
-GetCustomPermissionsRequest = _reflection.GeneratedProtocolMessageType('GetCustomPermissionsRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETCUSTOMPERMISSIONSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetCustomPermissionsRequest = _reflection.GeneratedProtocolMessageType('GetCustomPermissionsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETCUSTOMPERMISSIONSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetCustomPermissionsRequest)
- ))
+ })
_sym_db.RegisterMessage(GetCustomPermissionsRequest)
-GetCustomPermissionsResponse = _reflection.GeneratedProtocolMessageType('GetCustomPermissionsResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETCUSTOMPERMISSIONSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+GetCustomPermissionsResponse = _reflection.GeneratedProtocolMessageType('GetCustomPermissionsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETCUSTOMPERMISSIONSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetCustomPermissionsResponse)
- ))
+ })
_sym_db.RegisterMessage(GetCustomPermissionsResponse)
-GetVisibleMembersRequest = _reflection.GeneratedProtocolMessageType('GetVisibleMembersRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETVISIBLEMEMBERSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetVisibleMembersRequest = _reflection.GeneratedProtocolMessageType('GetVisibleMembersRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETVISIBLEMEMBERSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetVisibleMembersRequest)
- ))
+ })
_sym_db.RegisterMessage(GetVisibleMembersRequest)
-GetVisibleMembersResponse = _reflection.GeneratedProtocolMessageType('GetVisibleMembersResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETVISIBLEMEMBERSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+GetVisibleMembersResponse = _reflection.GeneratedProtocolMessageType('GetVisibleMembersResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETVISIBLEMEMBERSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetVisibleMembersResponse)
- ))
+ })
_sym_db.RegisterMessage(GetVisibleMembersResponse)
-GetLabelOptionsRequest = _reflection.GeneratedProtocolMessageType('GetLabelOptionsRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETLABELOPTIONSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetLabelOptionsRequest = _reflection.GeneratedProtocolMessageType('GetLabelOptionsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETLABELOPTIONSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetLabelOptionsRequest)
- ))
+ })
_sym_db.RegisterMessage(GetLabelOptionsRequest)
-GetLabelOptionsResponse = _reflection.GeneratedProtocolMessageType('GetLabelOptionsResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETLABELOPTIONSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+GetLabelOptionsResponse = _reflection.GeneratedProtocolMessageType('GetLabelOptionsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETLABELOPTIONSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetLabelOptionsResponse)
- ))
+ })
_sym_db.RegisterMessage(GetLabelOptionsResponse)
-ListStatusesRequest = _reflection.GeneratedProtocolMessageType('ListStatusesRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTATUSESREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+ListStatusesRequest = _reflection.GeneratedProtocolMessageType('ListStatusesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTATUSESREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStatusesRequest)
- ))
+ })
_sym_db.RegisterMessage(ListStatusesRequest)
-ListStatusesResponse = _reflection.GeneratedProtocolMessageType('ListStatusesResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTSTATUSESRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+ListStatusesResponse = _reflection.GeneratedProtocolMessageType('ListStatusesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTSTATUSESRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListStatusesResponse)
- ))
+ })
_sym_db.RegisterMessage(ListStatusesResponse)
-ListComponentsRequest = _reflection.GeneratedProtocolMessageType('ListComponentsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTCOMPONENTSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+ListComponentsRequest = _reflection.GeneratedProtocolMessageType('ListComponentsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTCOMPONENTSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListComponentsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListComponentsRequest)
-ListComponentsResponse = _reflection.GeneratedProtocolMessageType('ListComponentsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTCOMPONENTSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+ListComponentsResponse = _reflection.GeneratedProtocolMessageType('ListComponentsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTCOMPONENTSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListComponentsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListComponentsResponse)
-ListFieldsRequest = _reflection.GeneratedProtocolMessageType('ListFieldsRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTFIELDSREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+ListFieldsRequest = _reflection.GeneratedProtocolMessageType('ListFieldsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTFIELDSREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListFieldsRequest)
- ))
+ })
_sym_db.RegisterMessage(ListFieldsRequest)
-ListFieldsResponse = _reflection.GeneratedProtocolMessageType('ListFieldsResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTFIELDSRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+ListFieldsResponse = _reflection.GeneratedProtocolMessageType('ListFieldsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTFIELDSRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListFieldsResponse)
- ))
+ })
_sym_db.RegisterMessage(ListFieldsResponse)
-GetProjectStarCountRequest = _reflection.GeneratedProtocolMessageType('GetProjectStarCountRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETPROJECTSTARCOUNTREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+GetProjectStarCountRequest = _reflection.GeneratedProtocolMessageType('GetProjectStarCountRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETPROJECTSTARCOUNTREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetProjectStarCountRequest)
- ))
+ })
_sym_db.RegisterMessage(GetProjectStarCountRequest)
-GetProjectStarCountResponse = _reflection.GeneratedProtocolMessageType('GetProjectStarCountResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETPROJECTSTARCOUNTRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+GetProjectStarCountResponse = _reflection.GeneratedProtocolMessageType('GetProjectStarCountResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETPROJECTSTARCOUNTRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetProjectStarCountResponse)
- ))
+ })
_sym_db.RegisterMessage(GetProjectStarCountResponse)
-StarProjectRequest = _reflection.GeneratedProtocolMessageType('StarProjectRequest', (_message.Message,), dict(
- DESCRIPTOR = _STARPROJECTREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+StarProjectRequest = _reflection.GeneratedProtocolMessageType('StarProjectRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _STARPROJECTREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarProjectRequest)
- ))
+ })
_sym_db.RegisterMessage(StarProjectRequest)
-StarProjectResponse = _reflection.GeneratedProtocolMessageType('StarProjectResponse', (_message.Message,), dict(
- DESCRIPTOR = _STARPROJECTRESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+StarProjectResponse = _reflection.GeneratedProtocolMessageType('StarProjectResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _STARPROJECTRESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarProjectResponse)
- ))
+ })
_sym_db.RegisterMessage(StarProjectResponse)
-CheckProjectNameRequest = _reflection.GeneratedProtocolMessageType('CheckProjectNameRequest', (_message.Message,), dict(
- DESCRIPTOR = _CHECKPROJECTNAMEREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+CheckProjectNameRequest = _reflection.GeneratedProtocolMessageType('CheckProjectNameRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKPROJECTNAMEREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckProjectNameRequest)
- ))
+ })
_sym_db.RegisterMessage(CheckProjectNameRequest)
-CheckProjectNameResponse = _reflection.GeneratedProtocolMessageType('CheckProjectNameResponse', (_message.Message,), dict(
- DESCRIPTOR = _CHECKPROJECTNAMERESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+CheckProjectNameResponse = _reflection.GeneratedProtocolMessageType('CheckProjectNameResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKPROJECTNAMERESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckProjectNameResponse)
- ))
+ })
_sym_db.RegisterMessage(CheckProjectNameResponse)
-CheckComponentNameRequest = _reflection.GeneratedProtocolMessageType('CheckComponentNameRequest', (_message.Message,), dict(
- DESCRIPTOR = _CHECKCOMPONENTNAMEREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+CheckComponentNameRequest = _reflection.GeneratedProtocolMessageType('CheckComponentNameRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKCOMPONENTNAMEREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckComponentNameRequest)
- ))
+ })
_sym_db.RegisterMessage(CheckComponentNameRequest)
-CheckComponentNameResponse = _reflection.GeneratedProtocolMessageType('CheckComponentNameResponse', (_message.Message,), dict(
- DESCRIPTOR = _CHECKCOMPONENTNAMERESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+CheckComponentNameResponse = _reflection.GeneratedProtocolMessageType('CheckComponentNameResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKCOMPONENTNAMERESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckComponentNameResponse)
- ))
+ })
_sym_db.RegisterMessage(CheckComponentNameResponse)
-CheckFieldNameRequest = _reflection.GeneratedProtocolMessageType('CheckFieldNameRequest', (_message.Message,), dict(
- DESCRIPTOR = _CHECKFIELDNAMEREQUEST,
- __module__ = 'api.api_proto.projects_pb2'
+CheckFieldNameRequest = _reflection.GeneratedProtocolMessageType('CheckFieldNameRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKFIELDNAMEREQUEST,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckFieldNameRequest)
- ))
+ })
_sym_db.RegisterMessage(CheckFieldNameRequest)
-CheckFieldNameResponse = _reflection.GeneratedProtocolMessageType('CheckFieldNameResponse', (_message.Message,), dict(
- DESCRIPTOR = _CHECKFIELDNAMERESPONSE,
- __module__ = 'api.api_proto.projects_pb2'
+CheckFieldNameResponse = _reflection.GeneratedProtocolMessageType('CheckFieldNameResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CHECKFIELDNAMERESPONSE,
+ '__module__' : 'api.api_proto.projects_pb2'
# @@protoc_insertion_point(class_scope:monorail.CheckFieldNameResponse)
- ))
+ })
_sym_db.RegisterMessage(CheckFieldNameResponse)
+DESCRIPTOR._options = None
_PROJECTS = _descriptor.ServiceDescriptor(
name='Projects',
@@ -1229,6 +1258,7 @@
file=DESCRIPTOR,
index=0,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
serialized_start=1943,
serialized_end=3290,
methods=[
@@ -1240,6 +1270,7 @@
input_type=_LISTPROJECTSREQUEST,
output_type=_LISTPROJECTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListProjectTemplates',
@@ -1249,6 +1280,7 @@
input_type=_LISTPROJECTTEMPLATESREQUEST,
output_type=_LISTPROJECTTEMPLATESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetConfig',
@@ -1258,6 +1290,7 @@
input_type=_GETCONFIGREQUEST,
output_type=api_dot_api__proto_dot_project__objects__pb2._CONFIG,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetPresentationConfig',
@@ -1267,6 +1300,7 @@
input_type=_GETPRESENTATIONCONFIGREQUEST,
output_type=api_dot_api__proto_dot_project__objects__pb2._PRESENTATIONCONFIG,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetCustomPermissions',
@@ -1276,6 +1310,7 @@
input_type=_GETCUSTOMPERMISSIONSREQUEST,
output_type=_GETCUSTOMPERMISSIONSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetVisibleMembers',
@@ -1285,6 +1320,7 @@
input_type=_GETVISIBLEMEMBERSREQUEST,
output_type=_GETVISIBLEMEMBERSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetLabelOptions',
@@ -1294,6 +1330,7 @@
input_type=_GETLABELOPTIONSREQUEST,
output_type=_GETLABELOPTIONSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListStatuses',
@@ -1303,6 +1340,7 @@
input_type=_LISTSTATUSESREQUEST,
output_type=_LISTSTATUSESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListComponents',
@@ -1312,6 +1350,7 @@
input_type=_LISTCOMPONENTSREQUEST,
output_type=_LISTCOMPONENTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListFields',
@@ -1321,6 +1360,7 @@
input_type=_LISTFIELDSREQUEST,
output_type=_LISTFIELDSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetProjectStarCount',
@@ -1330,6 +1370,7 @@
input_type=_GETPROJECTSTARCOUNTREQUEST,
output_type=_GETPROJECTSTARCOUNTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='StarProject',
@@ -1339,6 +1380,7 @@
input_type=_STARPROJECTREQUEST,
output_type=_STARPROJECTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CheckProjectName',
@@ -1348,6 +1390,7 @@
input_type=_CHECKPROJECTNAMEREQUEST,
output_type=_CHECKPROJECTNAMERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CheckComponentName',
@@ -1357,6 +1400,7 @@
input_type=_CHECKCOMPONENTNAMEREQUEST,
output_type=_CHECKCOMPONENTNAMERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='CheckFieldName',
@@ -1366,6 +1410,7 @@
input_type=_CHECKFIELDNAMEREQUEST,
output_type=_CHECKFIELDNAMERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_PROJECTS)
diff --git a/api/api_proto/projects_prpc_pb2.py b/api/api_proto/projects_prpc_pb2.py
index fee63f3..17c1514 100644
--- a/api/api_proto/projects_prpc_pb2.py
+++ b/api/api_proto/projects_prpc_pb2.py
@@ -10,293 +10,280 @@
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
- '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'
- 'dZ5C+ki+emubbJz8bwoBFG4=')))
+ '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')))
_INDEX = {
f.name: {
'descriptor': f,
diff --git a/api/api_proto/sitewide.proto b/api/api_proto/sitewide.proto
index f378ad5..2c5b08c 100644
--- a/api/api_proto/sitewide.proto
+++ b/api/api_proto/sitewide.proto
@@ -7,6 +7,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
service Sitewide {
rpc RefreshToken (RefreshTokenRequest) returns (RefreshTokenResponse) {}
rpc GetServerStatus (GetServerStatusRequest) returns (GetServerStatusResponse) {}
diff --git a/api/api_proto/sitewide_pb2.py b/api/api_proto/sitewide_pb2.py
index acb7e88..e4d30f0 100644
--- a/api/api_proto/sitewide_pb2.py
+++ b/api/api_proto/sitewide_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/sitewide.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -18,8 +17,9 @@
name='api/api_proto/sitewide.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x1c\x61pi/api_proto/sitewide.proto\x12\x08monorail\"8\n\x13RefreshTokenRequest\x12\r\n\x05token\x18\x02 \x01(\t\x12\x12\n\ntoken_path\x18\x03 \x01(\t\"@\n\x14RefreshTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\x12\x19\n\x11token_expires_sec\x18\x02 \x01(\r\"\x18\n\x16GetServerStatusRequest\"Y\n\x17GetServerStatusResponse\x12\x16\n\x0e\x62\x61nner_message\x18\x01 \x01(\t\x12\x13\n\x0b\x62\x61nner_time\x18\x02 \x01(\x07\x12\x11\n\tread_only\x18\x03 \x01(\x08\x32\xb5\x01\n\x08Sitewide\x12O\n\x0cRefreshToken\x12\x1d.monorail.RefreshTokenRequest\x1a\x1e.monorail.RefreshTokenResponse\"\x00\x12X\n\x0fGetServerStatus\x12 .monorail.GetServerStatusRequest\x1a!.monorail.GetServerStatusResponse\"\x00\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x1c\x61pi/api_proto/sitewide.proto\x12\x08monorail\"8\n\x13RefreshTokenRequest\x12\r\n\x05token\x18\x02 \x01(\t\x12\x12\n\ntoken_path\x18\x03 \x01(\t\"@\n\x14RefreshTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\x12\x19\n\x11token_expires_sec\x18\x02 \x01(\r\"\x18\n\x16GetServerStatusRequest\"Y\n\x17GetServerStatusResponse\x12\x16\n\x0e\x62\x61nner_message\x18\x01 \x01(\t\x12\x13\n\x0b\x62\x61nner_time\x18\x02 \x01(\x07\x12\x11\n\tread_only\x18\x03 \x01(\x08\x32\xb5\x01\n\x08Sitewide\x12O\n\x0cRefreshToken\x12\x1d.monorail.RefreshTokenRequest\x1a\x1e.monorail.RefreshTokenResponse\"\x00\x12X\n\x0fGetServerStatus\x12 .monorail.GetServerStatusRequest\x1a!.monorail.GetServerStatusResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
)
@@ -31,21 +31,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='token', full_name='monorail.RefreshTokenRequest.token', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='token_path', full_name='monorail.RefreshTokenRequest.token_path', index=1,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -69,21 +70,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='token', full_name='monorail.RefreshTokenResponse.token', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='token_expires_sec', full_name='monorail.RefreshTokenResponse.token_expires_sec', index=1,
number=2, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -107,6 +109,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -131,28 +134,29 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='banner_message', full_name='monorail.GetServerStatusResponse.banner_message', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='banner_time', full_name='monorail.GetServerStatusResponse.banner_time', index=1,
number=2, type=7, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='read_only', full_name='monorail.GetServerStatusResponse.read_only', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -175,35 +179,36 @@
DESCRIPTOR.message_types_by_name['GetServerStatusResponse'] = _GETSERVERSTATUSRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-RefreshTokenRequest = _reflection.GeneratedProtocolMessageType('RefreshTokenRequest', (_message.Message,), dict(
- DESCRIPTOR = _REFRESHTOKENREQUEST,
- __module__ = 'api.api_proto.sitewide_pb2'
+RefreshTokenRequest = _reflection.GeneratedProtocolMessageType('RefreshTokenRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _REFRESHTOKENREQUEST,
+ '__module__' : 'api.api_proto.sitewide_pb2'
# @@protoc_insertion_point(class_scope:monorail.RefreshTokenRequest)
- ))
+ })
_sym_db.RegisterMessage(RefreshTokenRequest)
-RefreshTokenResponse = _reflection.GeneratedProtocolMessageType('RefreshTokenResponse', (_message.Message,), dict(
- DESCRIPTOR = _REFRESHTOKENRESPONSE,
- __module__ = 'api.api_proto.sitewide_pb2'
+RefreshTokenResponse = _reflection.GeneratedProtocolMessageType('RefreshTokenResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _REFRESHTOKENRESPONSE,
+ '__module__' : 'api.api_proto.sitewide_pb2'
# @@protoc_insertion_point(class_scope:monorail.RefreshTokenResponse)
- ))
+ })
_sym_db.RegisterMessage(RefreshTokenResponse)
-GetServerStatusRequest = _reflection.GeneratedProtocolMessageType('GetServerStatusRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETSERVERSTATUSREQUEST,
- __module__ = 'api.api_proto.sitewide_pb2'
+GetServerStatusRequest = _reflection.GeneratedProtocolMessageType('GetServerStatusRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETSERVERSTATUSREQUEST,
+ '__module__' : 'api.api_proto.sitewide_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetServerStatusRequest)
- ))
+ })
_sym_db.RegisterMessage(GetServerStatusRequest)
-GetServerStatusResponse = _reflection.GeneratedProtocolMessageType('GetServerStatusResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETSERVERSTATUSRESPONSE,
- __module__ = 'api.api_proto.sitewide_pb2'
+GetServerStatusResponse = _reflection.GeneratedProtocolMessageType('GetServerStatusResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETSERVERSTATUSRESPONSE,
+ '__module__' : 'api.api_proto.sitewide_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetServerStatusResponse)
- ))
+ })
_sym_db.RegisterMessage(GetServerStatusResponse)
+DESCRIPTOR._options = None
_SITEWIDE = _descriptor.ServiceDescriptor(
name='Sitewide',
@@ -211,6 +216,7 @@
file=DESCRIPTOR,
index=0,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
serialized_start=284,
serialized_end=465,
methods=[
@@ -222,6 +228,7 @@
input_type=_REFRESHTOKENREQUEST,
output_type=_REFRESHTOKENRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetServerStatus',
@@ -231,6 +238,7 @@
input_type=_GETSERVERSTATUSREQUEST,
output_type=_GETSERVERSTATUSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_SITEWIDE)
diff --git a/api/api_proto/sitewide_prpc_pb2.py b/api/api_proto/sitewide_prpc_pb2.py
index 6d999b4..2aed7a8 100644
--- a/api/api_proto/sitewide_prpc_pb2.py
+++ b/api/api_proto/sitewide_prpc_pb2.py
@@ -10,22 +10,22 @@
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
- 'eJx9lV1z2kYUhrUrgaUDTmCxg8BfGwxOpjOGxulFJnep63bqaeMOuDO5YwSsQRPQUmlx45v+pt'
- '7017T3/Rs9u1olaRvnghm95+M9zzmCAf6swn60jgf4Ga9TqeQgi5X4NZ6JvpHMX8lEplG87FxC'
- 'YyhuUpEtruVbkQzFLxuRKbYDJaV1SDl5GgxzwQ4AzMN4HalF6JpUYCI/YaDzBnb+7ZWtZZKJD2'
- 'bkY7MvoJ6biXfrGJvGmZiacdvDhyZxkcdHYtoJ4dF3Qo1EeivSkYrUJrOgnd+g+b+MHduDB5Mo'
- 'SUQ6Xoksi+bCzt/Ooz/mQXYEFVum4pUwBFtDyEPXGGF7EKQimo1lsrwzS/tDXweuUJ/9QcAf2e'
- 'OyK6h+fAB20C/u3P/EkduH96XzBToOewMP/7Md4x+aPn2S9uPPVBTOl7/7UGZeyXlC4G8CpMrc'
- 'ksPO/iL8XK7v0ni+UPzsy2cv+PVC8PNFKlfxZsVfbdRCplmfv1ouuSnKOGLrCbM+8J8zweUNV4'
- 's445ncpFPBp3ImOMq5RIhEzPjkjkf869E3p5m6Wwrgy3gqkAibIsWnUcIngt/ITTLjcYJBwX/4'
- '/vzi9eiC38RLdE95pIAvlFpnLweDmbgVS7kWiDSXcr4U/alcDTCQnObzB9Y+G0yyGYAPhDJ3y6'
- '8BAC07zAucKsFnt+wQ5gYYr4BXdqjDXKCXUIWSFpjCWxUKDWDnSaFcVGff2jYsrNCRTRGtyruF'
- 'wrZK87RQ2FZ5cQXHQD2kqDkN0m7y1+Kd4tEtvrdogruqaP6SfwUaz9MMNX9Pz/EMXp02YBtKWn'
- 'jMq9PagbbWsqSTfqGwrx48KBSOrdeZdcEUo6F1IejCaL1hK0lJJwsXvQoL3ufQhT1qGnjCvKbT'
- 'vg/+eQ6v25v+vhlLNHxo4YmBD2nz0FgTAx/ascTAhxaeGPjQwhMN36JH1kXDt2jYsJUavvXeRU'
- '9vBe1CoUvr4NDAU+YdOkf3wT/L4fWkQz9vcJl3jD+Yz78qFxuO/SPD6eptu3TfcLpm2y49fmxY'
- 'XLNt13K6Zttu0CwUcnbbe9YFUz3ati562x7t7ttKvW2PBoXSpbBbKHTphS3rgl/BE7prXSi6nN'
- 'Be21bSkk6WC4UuJ1u1QqHLSWNnUjb/Hc//AbuGQxI=')))
+ 'eJx9lFFP20gQgFkbwmYJdDApSQ2UbSSgPYm4hHuoWumklqNVUa+cEk6q7iVykk1ineNNvRsKL/'
+ '1X9z/uB9z7/Yd76njtGNOWPkTa+XZ2Zr61HfbPKtv2p4GHv+40llp6KtDiUzAQTRM6dCIjGftB'
+ '2DhjG20xjIUaX8i/RNQWH2dCaafKlnQS1y1OHpfbaeDsMGYW3amvx3XbbJUN+R1B4wOr3q6lpj'
+ 'JS4qYYKRb7ia2nxcTVNMBDXSX6pt1q+57ZOE15R/Qbdbb5RuiOiC9F3NG+nqls0MZnVvtmJ2u7'
+ 'x9Z6fhSJuDsRSvkjkfVfTelvKXR22UqWpoOJMBMst1mKLpA4W6wcC3/QlVF4baRpmybgHOPW34'
+ 'TRTna5zjmrFC/A2WnO77n5nUt2H961nQo0FpwP7N5Xdg6/OfT9K3Ef/SBjXvnVkz8PgmgY+948'
+ '97Ll3XplXsw3zv6njMISLMATIOw/QismcFr/En4ip9dxMBpr3np69IxfjAU/GcdyEswm/OVMj2'
+ 'WsmvxlGHKTpDg6JuMMmoz/oQSXQ67HgeJKzuK+4H05EBzDkcSJIzHgvWvu81edXw+Vvg4F42HQ'
+ 'Fzg+HvI17/sR7wk+lLNowIMIoeDv3p6cvu+c8mEQYvWY+5rxsdZT9dzzBuJShHIqcKSRlKNQNP'
+ 'ty4iGIDtP+XlZeeT01YIxSC5ZRdB1XFMq4+iWBdCVbV2iJLsAKrtfwXkxECcYUgK2ZyML9Clhw'
+ 'xmAeY0YFSuAUiIWkCgcFYiNpweu8CoFVrNLJM4ghJbhfIBaSGhwWiI3kGZyzPbqIczg4530gbo'
+ '2/F1ea+5f4ZP0e3pL2R8/5zwwFFs14DgpsYevFTGADW29g2SymS4bQAiFIyrBWIDaSdZScVyEo'
+ 'aEE9zyBYpXqrCjE55UKnRKAKm1AzAgQeoMD2nQLHqQAxiRS2TWtiBNxcgGQCbt6aZAJuLkAyAT'
+ 'cXIEZgC8/s5hmJwNatKsTklMEtEBvJDjw0AhZwFHh0p8BRKpC04iiQHrJhL/3sfvzYbDy0h4d2'
+ 'zby2sd7H6bbNLHZmvZ/Pa2fW+zhvrUBsJG728G0zygGecfOMxDoh5QJJcph5E+fERlKHB3kVCx'
+ '7jmZsMC6skpFQgBMkyfjc3xEayAdVeyfwZHX8BAsRanA==')))
_INDEX = {
f.name: {
'descriptor': f,
diff --git a/api/api_proto/user_objects.proto b/api/api_proto/user_objects.proto
index 20f0eed..45209fe 100644
--- a/api/api_proto/user_objects.proto
+++ b/api/api_proto/user_objects.proto
@@ -12,6 +12,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
// TODO(jojwang): monorail:1701, fill User with all info necessary for
// creating a user profile page.
// Next available tag: 7
diff --git a/api/api_proto/user_objects_pb2.py b/api/api_proto/user_objects_pb2.py
index c4e09f1..772f127 100644
--- a/api/api_proto/user_objects_pb2.py
+++ b/api/api_proto/user_objects_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/user_objects.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -19,8 +18,9 @@
name='api/api_proto/user_objects.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n api/api_proto/user_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\"\xb6\x01\n\x04User\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\x03\x12\x15\n\ris_site_admin\x18\x03 \x01(\x08\x12\x14\n\x0c\x61vailability\x18\x04 \x01(\t\x12,\n\x11linked_parent_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12,\n\x11linked_child_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\",\n\rUserPrefValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8a\x01\n\x0cUserProjects\x12#\n\x08user_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12\x10\n\x08owner_of\x18\x02 \x03(\t\x12\x11\n\tmember_of\x18\x03 \x03(\t\x12\x16\n\x0e\x63ontributor_to\x18\x04 \x03(\t\x12\x18\n\x10starred_projects\x18\x05 \x03(\tb\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n api/api_proto/user_objects.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\"\xb6\x01\n\x04User\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\x03\x12\x15\n\ris_site_admin\x18\x03 \x01(\x08\x12\x14\n\x0c\x61vailability\x18\x04 \x01(\t\x12,\n\x11linked_parent_ref\x18\x05 \x01(\x0b\x32\x11.monorail.UserRef\x12,\n\x11linked_child_refs\x18\x06 \x03(\x0b\x32\x11.monorail.UserRef\",\n\rUserPrefValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8a\x01\n\x0cUserProjects\x12#\n\x08user_ref\x18\x01 \x01(\x0b\x32\x11.monorail.UserRef\x12\x10\n\x08owner_of\x18\x02 \x03(\t\x12\x11\n\tmember_of\x18\x03 \x03(\t\x12\x16\n\x0e\x63ontributor_to\x18\x04 \x03(\t\x12\x18\n\x10starred_projects\x18\x05 \x03(\tB)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,])
@@ -33,49 +33,50 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='display_name', full_name='monorail.User.display_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='user_id', full_name='monorail.User.user_id', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='is_site_admin', full_name='monorail.User.is_site_admin', index=2,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='availability', full_name='monorail.User.availability', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='linked_parent_ref', full_name='monorail.User.linked_parent_ref', index=4,
number=5, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='linked_child_refs', full_name='monorail.User.linked_child_refs', index=5,
number=6, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -99,21 +100,22 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='monorail.UserPrefValue.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='value', full_name='monorail.UserPrefValue.value', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -137,6 +139,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.UserProjects.user_ref', index=0,
@@ -144,35 +147,35 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='owner_of', full_name='monorail.UserProjects.owner_of', index=1,
number=2, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='member_of', full_name='monorail.UserProjects.member_of', index=2,
number=3, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='contributor_to', full_name='monorail.UserProjects.contributor_to', index=3,
number=4, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='starred_projects', full_name='monorail.UserProjects.starred_projects', index=4,
number=5, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -197,26 +200,27 @@
DESCRIPTOR.message_types_by_name['UserProjects'] = _USERPROJECTS
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), dict(
- DESCRIPTOR = _USER,
- __module__ = 'api.api_proto.user_objects_pb2'
+User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), {
+ 'DESCRIPTOR' : _USER,
+ '__module__' : 'api.api_proto.user_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.User)
- ))
+ })
_sym_db.RegisterMessage(User)
-UserPrefValue = _reflection.GeneratedProtocolMessageType('UserPrefValue', (_message.Message,), dict(
- DESCRIPTOR = _USERPREFVALUE,
- __module__ = 'api.api_proto.user_objects_pb2'
+UserPrefValue = _reflection.GeneratedProtocolMessageType('UserPrefValue', (_message.Message,), {
+ 'DESCRIPTOR' : _USERPREFVALUE,
+ '__module__' : 'api.api_proto.user_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.UserPrefValue)
- ))
+ })
_sym_db.RegisterMessage(UserPrefValue)
-UserProjects = _reflection.GeneratedProtocolMessageType('UserProjects', (_message.Message,), dict(
- DESCRIPTOR = _USERPROJECTS,
- __module__ = 'api.api_proto.user_objects_pb2'
+UserProjects = _reflection.GeneratedProtocolMessageType('UserProjects', (_message.Message,), {
+ 'DESCRIPTOR' : _USERPROJECTS,
+ '__module__' : 'api.api_proto.user_objects_pb2'
# @@protoc_insertion_point(class_scope:monorail.UserProjects)
- ))
+ })
_sym_db.RegisterMessage(UserProjects)
+DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/api/api_proto/users.proto b/api/api_proto/users.proto
index 574dccd..da73b56 100644
--- a/api/api_proto/users.proto
+++ b/api/api_proto/users.proto
@@ -7,6 +7,8 @@
package monorail;
+option go_package = "infra/monorailv2/api/api_proto;monorail";
+
import "api/api_proto/user_objects.proto";
import "api/api_proto/common.proto";
diff --git a/api/api_proto/users_pb2.py b/api/api_proto/users_pb2.py
index 8d84700..65ab702 100644
--- a/api/api_proto/users_pb2.py
+++ b/api/api_proto/users_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: api/api_proto/users.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
name='api/api_proto/users.proto',
package='monorail',
syntax='proto3',
- serialized_options=None,
- serialized_pb=_b('\n\x19\x61pi/api_proto/users.proto\x12\x08monorail\x1a api/api_proto/user_objects.proto\x1a\x1a\x61pi/api_proto/common.proto\"R\n\x1aListReferencedUsersRequest\x12\x0e\n\x06\x65mails\x18\x02 \x03(\t\x12$\n\tuser_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\"<\n\x1bListReferencedUsersResponse\x12\x1d\n\x05users\x18\x01 \x03(\x0b\x32\x0e.monorail.User\"5\n\x0eGetUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"<\n\x15GetMembershipsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"?\n\x16GetMembershipsResponse\x12%\n\ngroup_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"=\n\x16GetSavedQueriesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"F\n\x17GetSavedQueriesResponse\x12+\n\rsaved_queries\x18\x01 \x03(\x0b\x32\x14.monorail.SavedQuery\">\n\x17GetUserStarCountRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\".\n\x18GetUserStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"G\n\x0fStarUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"&\n\x10StarUserResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"7\n\x1fSetExpandPermsPreferenceRequest\x12\x14\n\x0c\x65xpand_perms\x18\x02 \x01(\x08\"\"\n SetExpandPermsPreferenceResponse\":\n\x13GetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\">\n\x14GetUserPrefsResponse\x12&\n\x05prefs\x18\x01 \x03(\x0b\x32\x17.monorail.UserPrefValue\"b\n\x13SetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x05prefs\x18\x03 \x03(\x0b\x32\x17.monorail.UserPrefValue\"\x16\n\x14SetUserPrefsResponse\"*\n\x19InviteLinkedParentRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1c\n\x1aInviteLinkedParentResponse\")\n\x18\x41\x63\x63\x65ptLinkedChildRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1b\n\x19\x41\x63\x63\x65ptLinkedChildResponse\"\\\n\x15UnlinkAccountsRequest\x12!\n\x06parent\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12 \n\x05\x63hild\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\"\x18\n\x16UnlinkAccountsResponse\"?\n\x17GetUsersProjectsRequest\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"J\n\x18GetUsersProjectsResponse\x12.\n\x0eusers_projects\x18\x01 \x03(\x0b\x32\x16.monorail.UserProjects\"#\n\x12\x45xpungeUserRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\"\x15\n\x13\x45xpungeUserResponse2\xd3\t\n\x05Users\x12\x35\n\x07GetUser\x12\x18.monorail.GetUserRequest\x1a\x0e.monorail.User\"\x00\x12\x64\n\x13ListReferencedUsers\x12$.monorail.ListReferencedUsersRequest\x1a%.monorail.ListReferencedUsersResponse\"\x00\x12U\n\x0eGetMemberships\x12\x1f.monorail.GetMembershipsRequest\x1a .monorail.GetMembershipsResponse\"\x00\x12X\n\x0fGetSavedQueries\x12 .monorail.GetSavedQueriesRequest\x1a!.monorail.GetSavedQueriesResponse\"\x00\x12[\n\x10GetUserStarCount\x12!.monorail.GetUserStarCountRequest\x1a\".monorail.GetUserStarCountResponse\"\x00\x12\x43\n\x08StarUser\x12\x19.monorail.StarUserRequest\x1a\x1a.monorail.StarUserResponse\"\x00\x12O\n\x0cGetUserPrefs\x12\x1d.monorail.GetUserPrefsRequest\x1a\x1e.monorail.GetUserPrefsResponse\"\x00\x12O\n\x0cSetUserPrefs\x12\x1d.monorail.SetUserPrefsRequest\x1a\x1e.monorail.SetUserPrefsResponse\"\x00\x12s\n\x18SetExpandPermsPreference\x12).monorail.SetExpandPermsPreferenceRequest\x1a*.monorail.SetExpandPermsPreferenceResponse\"\x00\x12\x61\n\x12InviteLinkedParent\x12#.monorail.InviteLinkedParentRequest\x1a$.monorail.InviteLinkedParentResponse\"\x00\x12^\n\x11\x41\x63\x63\x65ptLinkedChild\x12\".monorail.AcceptLinkedChildRequest\x1a#.monorail.AcceptLinkedChildResponse\"\x00\x12U\n\x0eUnlinkAccounts\x12\x1f.monorail.UnlinkAccountsRequest\x1a .monorail.UnlinkAccountsResponse\"\x00\x12[\n\x10GetUsersProjects\x12!.monorail.GetUsersProjectsRequest\x1a\".monorail.GetUsersProjectsResponse\"\x00\x12L\n\x0b\x45xpungeUser\x12\x1c.monorail.ExpungeUserRequest\x1a\x1d.monorail.ExpungeUserResponse\"\x00\x62\x06proto3')
+ serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x19\x61pi/api_proto/users.proto\x12\x08monorail\x1a api/api_proto/user_objects.proto\x1a\x1a\x61pi/api_proto/common.proto\"R\n\x1aListReferencedUsersRequest\x12\x0e\n\x06\x65mails\x18\x02 \x03(\t\x12$\n\tuser_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\"<\n\x1bListReferencedUsersResponse\x12\x1d\n\x05users\x18\x01 \x03(\x0b\x32\x0e.monorail.User\"5\n\x0eGetUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"<\n\x15GetMembershipsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"?\n\x16GetMembershipsResponse\x12%\n\ngroup_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"=\n\x16GetSavedQueriesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"F\n\x17GetSavedQueriesResponse\x12+\n\rsaved_queries\x18\x01 \x03(\x0b\x32\x14.monorail.SavedQuery\">\n\x17GetUserStarCountRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\".\n\x18GetUserStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"G\n\x0fStarUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"&\n\x10StarUserResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"7\n\x1fSetExpandPermsPreferenceRequest\x12\x14\n\x0c\x65xpand_perms\x18\x02 \x01(\x08\"\"\n SetExpandPermsPreferenceResponse\":\n\x13GetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\">\n\x14GetUserPrefsResponse\x12&\n\x05prefs\x18\x01 \x03(\x0b\x32\x17.monorail.UserPrefValue\"b\n\x13SetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x05prefs\x18\x03 \x03(\x0b\x32\x17.monorail.UserPrefValue\"\x16\n\x14SetUserPrefsResponse\"*\n\x19InviteLinkedParentRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1c\n\x1aInviteLinkedParentResponse\")\n\x18\x41\x63\x63\x65ptLinkedChildRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1b\n\x19\x41\x63\x63\x65ptLinkedChildResponse\"\\\n\x15UnlinkAccountsRequest\x12!\n\x06parent\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12 \n\x05\x63hild\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\"\x18\n\x16UnlinkAccountsResponse\"?\n\x17GetUsersProjectsRequest\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"J\n\x18GetUsersProjectsResponse\x12.\n\x0eusers_projects\x18\x01 \x03(\x0b\x32\x16.monorail.UserProjects\"#\n\x12\x45xpungeUserRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\"\x15\n\x13\x45xpungeUserResponse2\xd3\t\n\x05Users\x12\x35\n\x07GetUser\x12\x18.monorail.GetUserRequest\x1a\x0e.monorail.User\"\x00\x12\x64\n\x13ListReferencedUsers\x12$.monorail.ListReferencedUsersRequest\x1a%.monorail.ListReferencedUsersResponse\"\x00\x12U\n\x0eGetMemberships\x12\x1f.monorail.GetMembershipsRequest\x1a .monorail.GetMembershipsResponse\"\x00\x12X\n\x0fGetSavedQueries\x12 .monorail.GetSavedQueriesRequest\x1a!.monorail.GetSavedQueriesResponse\"\x00\x12[\n\x10GetUserStarCount\x12!.monorail.GetUserStarCountRequest\x1a\".monorail.GetUserStarCountResponse\"\x00\x12\x43\n\x08StarUser\x12\x19.monorail.StarUserRequest\x1a\x1a.monorail.StarUserResponse\"\x00\x12O\n\x0cGetUserPrefs\x12\x1d.monorail.GetUserPrefsRequest\x1a\x1e.monorail.GetUserPrefsResponse\"\x00\x12O\n\x0cSetUserPrefs\x12\x1d.monorail.SetUserPrefsRequest\x1a\x1e.monorail.SetUserPrefsResponse\"\x00\x12s\n\x18SetExpandPermsPreference\x12).monorail.SetExpandPermsPreferenceRequest\x1a*.monorail.SetExpandPermsPreferenceResponse\"\x00\x12\x61\n\x12InviteLinkedParent\x12#.monorail.InviteLinkedParentRequest\x1a$.monorail.InviteLinkedParentResponse\"\x00\x12^\n\x11\x41\x63\x63\x65ptLinkedChild\x12\".monorail.AcceptLinkedChildRequest\x1a#.monorail.AcceptLinkedChildResponse\"\x00\x12U\n\x0eUnlinkAccounts\x12\x1f.monorail.UnlinkAccountsRequest\x1a .monorail.UnlinkAccountsResponse\"\x00\x12[\n\x10GetUsersProjects\x12!.monorail.GetUsersProjectsRequest\x1a\".monorail.GetUsersProjectsResponse\"\x00\x12L\n\x0b\x45xpungeUser\x12\x1c.monorail.ExpungeUserRequest\x1a\x1d.monorail.ExpungeUserResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
,
dependencies=[api_dot_api__proto_dot_user__objects__pb2.DESCRIPTOR,api_dot_api__proto_dot_common__pb2.DESCRIPTOR,])
@@ -34,6 +34,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='emails', full_name='monorail.ListReferencedUsersRequest.emails', index=0,
@@ -41,14 +42,14 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='user_refs', full_name='monorail.ListReferencedUsersRequest.user_refs', index=1,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -72,6 +73,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='users', full_name='monorail.ListReferencedUsersResponse.users', index=0,
@@ -79,7 +81,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -103,6 +105,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.GetUserRequest.user_ref', index=0,
@@ -110,7 +113,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -134,6 +137,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.GetMembershipsRequest.user_ref', index=0,
@@ -141,7 +145,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -165,6 +169,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='group_refs', full_name='monorail.GetMembershipsResponse.group_refs', index=0,
@@ -172,7 +177,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -196,6 +201,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.GetSavedQueriesRequest.user_ref', index=0,
@@ -203,7 +209,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -227,6 +233,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='saved_queries', full_name='monorail.GetSavedQueriesResponse.saved_queries', index=0,
@@ -234,7 +241,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -258,6 +265,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.GetUserStarCountRequest.user_ref', index=0,
@@ -265,7 +273,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -289,6 +297,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.GetUserStarCountResponse.star_count', index=0,
@@ -296,7 +305,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -320,6 +329,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.StarUserRequest.user_ref', index=0,
@@ -327,14 +337,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='starred', full_name='monorail.StarUserRequest.starred', index=1,
number=3, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -358,6 +368,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='star_count', full_name='monorail.StarUserResponse.star_count', index=0,
@@ -365,7 +376,7 @@
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -389,6 +400,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='expand_perms', full_name='monorail.SetExpandPermsPreferenceRequest.expand_perms', index=0,
@@ -396,7 +408,7 @@
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -420,6 +432,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -444,6 +457,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.GetUserPrefsRequest.user_ref', index=0,
@@ -451,7 +465,7 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -475,6 +489,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='prefs', full_name='monorail.GetUserPrefsResponse.prefs', index=0,
@@ -482,7 +497,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -506,6 +521,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_ref', full_name='monorail.SetUserPrefsRequest.user_ref', index=0,
@@ -513,14 +529,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='prefs', full_name='monorail.SetUserPrefsRequest.prefs', index=1,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -544,6 +560,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -568,14 +585,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='email', full_name='monorail.InviteLinkedParentRequest.email', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -599,6 +617,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -623,14 +642,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='email', full_name='monorail.AcceptLinkedChildRequest.email', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -654,6 +674,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -678,6 +699,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='parent', full_name='monorail.UnlinkAccountsRequest.parent', index=0,
@@ -685,14 +707,14 @@
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='child', full_name='monorail.UnlinkAccountsRequest.child', index=1,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -716,6 +738,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -740,6 +763,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='user_refs', full_name='monorail.GetUsersProjectsRequest.user_refs', index=0,
@@ -747,7 +771,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -771,6 +795,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='users_projects', full_name='monorail.GetUsersProjectsResponse.users_projects', index=0,
@@ -778,7 +803,7 @@
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -802,14 +827,15 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='email', full_name='monorail.ExpungeUserRequest.email', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
- serialized_options=None, file=DESCRIPTOR),
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
@@ -833,6 +859,7 @@
filename=None,
file=DESCRIPTOR,
containing_type=None,
+ create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
@@ -896,196 +923,197 @@
DESCRIPTOR.message_types_by_name['ExpungeUserResponse'] = _EXPUNGEUSERRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-ListReferencedUsersRequest = _reflection.GeneratedProtocolMessageType('ListReferencedUsersRequest', (_message.Message,), dict(
- DESCRIPTOR = _LISTREFERENCEDUSERSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+ListReferencedUsersRequest = _reflection.GeneratedProtocolMessageType('ListReferencedUsersRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTREFERENCEDUSERSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersRequest)
- ))
+ })
_sym_db.RegisterMessage(ListReferencedUsersRequest)
-ListReferencedUsersResponse = _reflection.GeneratedProtocolMessageType('ListReferencedUsersResponse', (_message.Message,), dict(
- DESCRIPTOR = _LISTREFERENCEDUSERSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+ListReferencedUsersResponse = _reflection.GeneratedProtocolMessageType('ListReferencedUsersResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _LISTREFERENCEDUSERSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersResponse)
- ))
+ })
_sym_db.RegisterMessage(ListReferencedUsersResponse)
-GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUserRequest)
- ))
+ })
_sym_db.RegisterMessage(GetUserRequest)
-GetMembershipsRequest = _reflection.GeneratedProtocolMessageType('GetMembershipsRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETMEMBERSHIPSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetMembershipsRequest = _reflection.GeneratedProtocolMessageType('GetMembershipsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETMEMBERSHIPSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetMembershipsRequest)
- ))
+ })
_sym_db.RegisterMessage(GetMembershipsRequest)
-GetMembershipsResponse = _reflection.GeneratedProtocolMessageType('GetMembershipsResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETMEMBERSHIPSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+GetMembershipsResponse = _reflection.GeneratedProtocolMessageType('GetMembershipsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETMEMBERSHIPSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetMembershipsResponse)
- ))
+ })
_sym_db.RegisterMessage(GetMembershipsResponse)
-GetSavedQueriesRequest = _reflection.GeneratedProtocolMessageType('GetSavedQueriesRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETSAVEDQUERIESREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetSavedQueriesRequest = _reflection.GeneratedProtocolMessageType('GetSavedQueriesRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETSAVEDQUERIESREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesRequest)
- ))
+ })
_sym_db.RegisterMessage(GetSavedQueriesRequest)
-GetSavedQueriesResponse = _reflection.GeneratedProtocolMessageType('GetSavedQueriesResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETSAVEDQUERIESRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+GetSavedQueriesResponse = _reflection.GeneratedProtocolMessageType('GetSavedQueriesResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETSAVEDQUERIESRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesResponse)
- ))
+ })
_sym_db.RegisterMessage(GetSavedQueriesResponse)
-GetUserStarCountRequest = _reflection.GeneratedProtocolMessageType('GetUserStarCountRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERSTARCOUNTREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetUserStarCountRequest = _reflection.GeneratedProtocolMessageType('GetUserStarCountRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERSTARCOUNTREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUserStarCountRequest)
- ))
+ })
_sym_db.RegisterMessage(GetUserStarCountRequest)
-GetUserStarCountResponse = _reflection.GeneratedProtocolMessageType('GetUserStarCountResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERSTARCOUNTRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+GetUserStarCountResponse = _reflection.GeneratedProtocolMessageType('GetUserStarCountResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERSTARCOUNTRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUserStarCountResponse)
- ))
+ })
_sym_db.RegisterMessage(GetUserStarCountResponse)
-StarUserRequest = _reflection.GeneratedProtocolMessageType('StarUserRequest', (_message.Message,), dict(
- DESCRIPTOR = _STARUSERREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+StarUserRequest = _reflection.GeneratedProtocolMessageType('StarUserRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _STARUSERREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarUserRequest)
- ))
+ })
_sym_db.RegisterMessage(StarUserRequest)
-StarUserResponse = _reflection.GeneratedProtocolMessageType('StarUserResponse', (_message.Message,), dict(
- DESCRIPTOR = _STARUSERRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+StarUserResponse = _reflection.GeneratedProtocolMessageType('StarUserResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _STARUSERRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.StarUserResponse)
- ))
+ })
_sym_db.RegisterMessage(StarUserResponse)
-SetExpandPermsPreferenceRequest = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceRequest', (_message.Message,), dict(
- DESCRIPTOR = _SETEXPANDPERMSPREFERENCEREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+SetExpandPermsPreferenceRequest = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _SETEXPANDPERMSPREFERENCEREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceRequest)
- ))
+ })
_sym_db.RegisterMessage(SetExpandPermsPreferenceRequest)
-SetExpandPermsPreferenceResponse = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceResponse', (_message.Message,), dict(
- DESCRIPTOR = _SETEXPANDPERMSPREFERENCERESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+SetExpandPermsPreferenceResponse = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _SETEXPANDPERMSPREFERENCERESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceResponse)
- ))
+ })
_sym_db.RegisterMessage(SetExpandPermsPreferenceResponse)
-GetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('GetUserPrefsRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERPREFSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('GetUserPrefsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERPREFSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUserPrefsRequest)
- ))
+ })
_sym_db.RegisterMessage(GetUserPrefsRequest)
-GetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('GetUserPrefsResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERPREFSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+GetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('GetUserPrefsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERPREFSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUserPrefsResponse)
- ))
+ })
_sym_db.RegisterMessage(GetUserPrefsResponse)
-SetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('SetUserPrefsRequest', (_message.Message,), dict(
- DESCRIPTOR = _SETUSERPREFSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+SetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('SetUserPrefsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _SETUSERPREFSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.SetUserPrefsRequest)
- ))
+ })
_sym_db.RegisterMessage(SetUserPrefsRequest)
-SetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('SetUserPrefsResponse', (_message.Message,), dict(
- DESCRIPTOR = _SETUSERPREFSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+SetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('SetUserPrefsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _SETUSERPREFSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.SetUserPrefsResponse)
- ))
+ })
_sym_db.RegisterMessage(SetUserPrefsResponse)
-InviteLinkedParentRequest = _reflection.GeneratedProtocolMessageType('InviteLinkedParentRequest', (_message.Message,), dict(
- DESCRIPTOR = _INVITELINKEDPARENTREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+InviteLinkedParentRequest = _reflection.GeneratedProtocolMessageType('InviteLinkedParentRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _INVITELINKEDPARENTREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentRequest)
- ))
+ })
_sym_db.RegisterMessage(InviteLinkedParentRequest)
-InviteLinkedParentResponse = _reflection.GeneratedProtocolMessageType('InviteLinkedParentResponse', (_message.Message,), dict(
- DESCRIPTOR = _INVITELINKEDPARENTRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+InviteLinkedParentResponse = _reflection.GeneratedProtocolMessageType('InviteLinkedParentResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _INVITELINKEDPARENTRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentResponse)
- ))
+ })
_sym_db.RegisterMessage(InviteLinkedParentResponse)
-AcceptLinkedChildRequest = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildRequest', (_message.Message,), dict(
- DESCRIPTOR = _ACCEPTLINKEDCHILDREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+AcceptLinkedChildRequest = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _ACCEPTLINKEDCHILDREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildRequest)
- ))
+ })
_sym_db.RegisterMessage(AcceptLinkedChildRequest)
-AcceptLinkedChildResponse = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildResponse', (_message.Message,), dict(
- DESCRIPTOR = _ACCEPTLINKEDCHILDRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+AcceptLinkedChildResponse = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _ACCEPTLINKEDCHILDRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildResponse)
- ))
+ })
_sym_db.RegisterMessage(AcceptLinkedChildResponse)
-UnlinkAccountsRequest = _reflection.GeneratedProtocolMessageType('UnlinkAccountsRequest', (_message.Message,), dict(
- DESCRIPTOR = _UNLINKACCOUNTSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+UnlinkAccountsRequest = _reflection.GeneratedProtocolMessageType('UnlinkAccountsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _UNLINKACCOUNTSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsRequest)
- ))
+ })
_sym_db.RegisterMessage(UnlinkAccountsRequest)
-UnlinkAccountsResponse = _reflection.GeneratedProtocolMessageType('UnlinkAccountsResponse', (_message.Message,), dict(
- DESCRIPTOR = _UNLINKACCOUNTSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+UnlinkAccountsResponse = _reflection.GeneratedProtocolMessageType('UnlinkAccountsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _UNLINKACCOUNTSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsResponse)
- ))
+ })
_sym_db.RegisterMessage(UnlinkAccountsResponse)
-GetUsersProjectsRequest = _reflection.GeneratedProtocolMessageType('GetUsersProjectsRequest', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERSPROJECTSREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+GetUsersProjectsRequest = _reflection.GeneratedProtocolMessageType('GetUsersProjectsRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERSPROJECTSREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsRequest)
- ))
+ })
_sym_db.RegisterMessage(GetUsersProjectsRequest)
-GetUsersProjectsResponse = _reflection.GeneratedProtocolMessageType('GetUsersProjectsResponse', (_message.Message,), dict(
- DESCRIPTOR = _GETUSERSPROJECTSRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+GetUsersProjectsResponse = _reflection.GeneratedProtocolMessageType('GetUsersProjectsResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _GETUSERSPROJECTSRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsResponse)
- ))
+ })
_sym_db.RegisterMessage(GetUsersProjectsResponse)
-ExpungeUserRequest = _reflection.GeneratedProtocolMessageType('ExpungeUserRequest', (_message.Message,), dict(
- DESCRIPTOR = _EXPUNGEUSERREQUEST,
- __module__ = 'api.api_proto.users_pb2'
+ExpungeUserRequest = _reflection.GeneratedProtocolMessageType('ExpungeUserRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _EXPUNGEUSERREQUEST,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.ExpungeUserRequest)
- ))
+ })
_sym_db.RegisterMessage(ExpungeUserRequest)
-ExpungeUserResponse = _reflection.GeneratedProtocolMessageType('ExpungeUserResponse', (_message.Message,), dict(
- DESCRIPTOR = _EXPUNGEUSERRESPONSE,
- __module__ = 'api.api_proto.users_pb2'
+ExpungeUserResponse = _reflection.GeneratedProtocolMessageType('ExpungeUserResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _EXPUNGEUSERRESPONSE,
+ '__module__' : 'api.api_proto.users_pb2'
# @@protoc_insertion_point(class_scope:monorail.ExpungeUserResponse)
- ))
+ })
_sym_db.RegisterMessage(ExpungeUserResponse)
+DESCRIPTOR._options = None
_USERS = _descriptor.ServiceDescriptor(
name='Users',
@@ -1093,6 +1121,7 @@
file=DESCRIPTOR,
index=0,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
serialized_start=1598,
serialized_end=2833,
methods=[
@@ -1104,6 +1133,7 @@
input_type=_GETUSERREQUEST,
output_type=api_dot_api__proto_dot_user__objects__pb2._USER,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ListReferencedUsers',
@@ -1113,6 +1143,7 @@
input_type=_LISTREFERENCEDUSERSREQUEST,
output_type=_LISTREFERENCEDUSERSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetMemberships',
@@ -1122,6 +1153,7 @@
input_type=_GETMEMBERSHIPSREQUEST,
output_type=_GETMEMBERSHIPSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetSavedQueries',
@@ -1131,6 +1163,7 @@
input_type=_GETSAVEDQUERIESREQUEST,
output_type=_GETSAVEDQUERIESRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetUserStarCount',
@@ -1140,6 +1173,7 @@
input_type=_GETUSERSTARCOUNTREQUEST,
output_type=_GETUSERSTARCOUNTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='StarUser',
@@ -1149,6 +1183,7 @@
input_type=_STARUSERREQUEST,
output_type=_STARUSERRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetUserPrefs',
@@ -1158,6 +1193,7 @@
input_type=_GETUSERPREFSREQUEST,
output_type=_GETUSERPREFSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='SetUserPrefs',
@@ -1167,6 +1203,7 @@
input_type=_SETUSERPREFSREQUEST,
output_type=_SETUSERPREFSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='SetExpandPermsPreference',
@@ -1176,6 +1213,7 @@
input_type=_SETEXPANDPERMSPREFERENCEREQUEST,
output_type=_SETEXPANDPERMSPREFERENCERESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='InviteLinkedParent',
@@ -1185,6 +1223,7 @@
input_type=_INVITELINKEDPARENTREQUEST,
output_type=_INVITELINKEDPARENTRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='AcceptLinkedChild',
@@ -1194,6 +1233,7 @@
input_type=_ACCEPTLINKEDCHILDREQUEST,
output_type=_ACCEPTLINKEDCHILDRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='UnlinkAccounts',
@@ -1203,6 +1243,7 @@
input_type=_UNLINKACCOUNTSREQUEST,
output_type=_UNLINKACCOUNTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='GetUsersProjects',
@@ -1212,6 +1253,7 @@
input_type=_GETUSERSPROJECTSREQUEST,
output_type=_GETUSERSPROJECTSRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
_descriptor.MethodDescriptor(
name='ExpungeUser',
@@ -1221,6 +1263,7 @@
input_type=_EXPUNGEUSERREQUEST,
output_type=_EXPUNGEUSERRESPONSE,
serialized_options=None,
+ create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_USERS)
diff --git a/api/api_proto/users_prpc_pb2.py b/api/api_proto/users_prpc_pb2.py
index 9c99700..4d06d72 100644
--- a/api/api_proto/users_prpc_pb2.py
+++ b/api/api_proto/users_prpc_pb2.py
@@ -10,109 +10,106 @@
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
- 'eJzdWs1zW0dyxxs8PDwM+DkgPgiS4hNIiaQ+SJGUd03Ka4uiJJuUbNEkZVvWrrkg8EhCAgEKD5'
- 'SsylY5yWE3VU4Ou6la57Cpyu7msDmsc9jNwc5hU5Wq/AO5pipVueSvSFW6e3oeQIkQHOe2B1Th'
- '92b6Y3p6enp6Rv7rNTlcPKrMwW/nqFFv1ueOA78RzNJ/5R7Wa/VGsVLNey932qnvPvJLTe6bz5'
- '/sUaofArFuK5Rl/m4laG76e37Dr5X88n0Usuk/OfaDpspIxz8EIUFOeNHpxCYjNSsTJKfh7wW5'
- 'KDQlFwZnjUazyAIYbrrH+k9QWJUjp0oJjuq1wFeTMkZjy1nEqu8FVrqx8Kbse9tvauZavUvSNW'
- 'qAgtbpWsRZi8ItmQb6d/3DXeB2UDkKvh2bdZl5kQ0P44qU+4368ZE2i9XJLAnqRHa5Tby2ik/9'
- '8vvHfqPif0udtmX2JT6s1JLsDfD7zhPdwHoNtbiFZM83e4I2FoW3iSsK22oWG6v141rz26m3JH'
- 'MvM2L9xqQM4ONOCb+CctZ072YiMN0KD2Q/0nzrWVc5GUduDb8MjmpNu5sGFublQIv1N9Pmphzf'
- '8pu3Pj0q1sobfuMw2GgYlzbanZU9PrXvHGEH0tDdTPotmkJBep25aEVgxaTYZNj4Ld3ilhw6yY'
- 'RHeVnGjtp8NHuSBfb9oFg99jd1r0JDprb+v7q0ZEa/kcyMHNo6RXWYtOG12tNK079bqT32yxtF'
- 'MFvolUMyRgGK1ElsalAYlfnTSJjhFZlbKZX8o6ZuXT2oVMuv5jcih0+hYHaPZfp+rQoN0AVdJr'
- 'TWjHSOSHJnW3EHNSVjJWRKDntqT91eyMnMi8JYjbVw6YJz1WkzMIqciN0dg1Qrdj8IF28bK3ak'
- '78k+is24s1ALM8y8OLtM13vczqZwQSpYBce1fb99fYdWt9qtnpapE321Bgv/npAx0k29JuOsp8'
- 'q1xJ/cMfIvbC2FiCrL1Clbk5psdey8P+bPdenFsxFR92nvats01PgJHV/elfJe5w4h249k/wtx'
- 'X50kO2VryZ99RY+Q80M58GLIVmdfMuuL+0K+8KouIfNV6ZrIq4bbNqKTgT6fP60pZHJP9rQHNz'
- 'X2kuj2aJU/06m5neFWB4anhL92hqdGqogKZK5TnFczJ6hftaPkL3yTrqHQolQvRzs10eLRMXzm'
- 'J1/dKRTxiRx8KQCqtpnvFE/zE6/s075YToa19sVyanRtXywdImK7S4cR6BSXfjFenuLSL8VBYH'
- '5XJtvCkxptEb0c4fJjHVoNt/U/TMi4isUi/2JZ8r8tafWoaCyiFv7D8lbrR88blf2DprdwZf51'
- 'b/vA91YPGvXDyvGht3LcPKjDCcFbqVY96hR4DR84wwqflR7I8Op7XvOgEnhB/bhR8r1Svex7AP'
- 'frT/1GzS97u8+9ondj6+bloPm86kuvWin5oBIQFZteqVjzdn1vDwxb9io1+Oh7d9dWb723dcvb'
- 'q1SBe8MrNqV30GweBctzc2X/qV+tH+GhZb9e36/6s3D0mIMPtcta/hyzD+Z2g7KUrrSEisbdAZ'
- 'mQIhpR0UR8hv5aKirjE1JK4USU3RMZteB/1InA9x63Vyal7UQE9O8VV2SPjCGApl6n1yBg29s/'
- 'ZlAU0PQlJoOOfWKHmyxEzrBBQNY38ppBQNZ3/SGTQVO/2OAmZNLvDBmEbZmLBgFZ/3fuMhmAAb'
- 'HFTTiuASdtEJANZC8bhD1fv8dktooOig+4yQayQSdjEJAN5uYMArLB5U0mi6moEm9yUwzIlNNn'
- 'EJCpgXGDgExdWGYyR0VTYp2bHCBLOcogIEsNTRkEZKmF20wWV9GhkCwOZEMhWRzIhkKyOJANAd'
- 'kbROaqaEbU8nPe9r2b96YfNeq7u5VaMLPsves39n3trpVas+61R9lZybxckJNxzhgEcjLeWwaB'
- 'nMz6I1YvoaJZ8X1uSgBZ1skZBGTZ/KJBQJZ98yMmkyqaEw+4SQJZzskaBGS54XmDgCz3xn0mS6'
- 'rocOgfSSAbDv0jCWTDoX8kgWw49A9Y6PlwonuALB9OdA+Q5cOJ7gGyfDjRvSo6It7mpl4gG3EG'
- 'DQKykdQ5g4Bs5MqqnJDChqXkRSatfNZ7z/+06RWfQjwq7sIybhb3l72rEteYjQvJcwvymrRtWm'
- 'MFMZaf9XQdAENH2YeEvVRsQoihCBPmljBpQdMvlvVUIbGN1CEC5ywkBw0CMQWVMwi0LIyM4uBs'
- 'WqET4iw3WTYiw8QCV51IKoOwZ2rUIGAyMe5h1IAVY09FZihq2Nhryp0g5haOaFrkicQiDaeZOS'
- 'BgPp3sNwjIpgfSBgHz6dww2VEo+3JkrpMdF7UdcRSX3QxJFSh1VmRlL/ASKNWeFZf14AWJnRUJ'
- 'g4BuViqDQOxsOkNio8pejLzWRSyGmEV3jMRGUexVFhslsVfFIoUAhA42JgwCuqssNkpir7JYoF'
- 'qKXOskdkGLxRC15J4hsTaKXRYF4mWTjZfZxjZJXeYJtEnqcmrMIJC67J0lqTFlvxVZ6TJYjHBv'
- 'sdQYSr3Og43RYK+LtzxiHSOx13mwMRJ7nQcbI7HXebCOsm9F3u4yWIyQt9xxEuug2Ntimng5NN'
- 'jbPFiHpN5Opg0CstuZCYNA6u3zUyQ1ruz1yN0ug8UAu85S4yj1Dg82ToO9I9b1komT2Ds82DiJ'
- 'vcODjZPYOzxYV9kbkc0ug8V4u+F6JNZFse+LHIl1Sez7YkNPtEsL/H3hGgR07ydSBoHY9zNZEp'
- 'tQ9geRB13CEMbrD9wsiU2g2A95tAkS+6H4gDZthA42JgwCug95tAkS+2E6w1yg6SORYi4QV+yP'
- 'xIdZ7mnFsNExCLvG+wwCLh8NKlJeKvsHkZ0uNsNd4wdujsRKVP4Ttpkk5T8RP9ABSJLNPmGbSV'
- 'L+E7aZJOU/YZsllV2K+F08BHedkjtFYpMotsxikyS2LEozxDpJYss82iSJLcdTBoHYMovtUXYl'
- '8qiT2HktFnetijtNBL3KrkUaXfTE/armjsg66NmLej4R2fyutwUHEK9YPoRtxDssPvf2/aZHtS'
- 'FIQBtecOSXKnuVkqeL4p53D7LRxrNK4F/yKk3sHMi27piqBpV9SHEvQ+KKNLAtoS16yRZPRE1H'
- 'nV7ynyfsP71kiyfsP71kiye8WvqU/TTyaZeZ7wPyp67eyPpwaM+EXvB9FBqecWjoI6nPkjmDgO'
- 'zZ8BmDQOqzswU5CVL7VexHkT+3Ool9TYvtB/ofsUX7Uexnp1o0+L9YNPimFu0ni34mfqQt2k9j'
- '+4wt2k9j+4wt2k9j+wws+jZpCtv0n1liIr9E55r9ylO/xhKL5bIHKSDIxZPKswaOpHTcwIMpyd'
- 'bdQg1wNQOnEDoIkzkDSQ7Yl2EUIRj4HBh4QDk/tiI/6WhhcPIkWHgAWPzYgplFmkHlfG5F/qoj'
- 'zaKmGQSazy0Xw7JtD8K02H9pQfzpByUG0WYOwM+tCdJqENcktrsGWggTfQZGEUIQQvlKOT+1Ij'
- '/rprMCFj+1XD3OlHJ+bkX+ppvOKaD5ueV6pHMKdf7C6JwinQH+3CqQVinS+Qujc4p0/sLonCKd'
- 'vzA6DynnF1bkb7vpPAQsfoE2Q5q0cn5pRf6+I81VTZMGml9a7hjpnEadf2WJNOmcJp0B/tIaJ6'
- '3S6J3YnjDQQigHDIwiTA0xL2j8tSWGmBd4mQPwV1aae6Of/brFy6Lu0JlhFKFK0VgyyvmNFfmH'
- 'buPPAIvfWJDTIE1WOb+1Iv/YkWZB02SB5reWO046Z3H8X1qQP6MSWVqbX5qVkaXRf2lBAsbQQg'
- 'gpNMMoQsihUXpOOb+zIv/0qtiD0nPA4nfGY3Io/feWuEgMcyT990Z6jqT/3kpmDbQQ5s4bGEU4'
- 'c4GkDyvnKyvyz93GPgwsvrLcPEkfRulfG38dprkH+JWlxzdM/vq18ddhkv+18ddhkv+18de8cv'
- '5gYT3m1fOVBxZ/sNyRXYeuVxflfw3Irhe0bZe5r7qq/QshbSouQQQpV4KjavH5Tq146HOdPMnf'
- '3oNPKivp4mWnUqbrhuimg3CtrGCpVoKdAOLnDu0EfCmWrAS4O6zgJ+jTw6OrVCvN5zmb+J/4pr'
- '4nB6tUvNvRlxZ0CxTrdF/RXz1RSdxrI6ebDH0Z4XS6jGByrhPuBYUl2Xvi1kgpabeZgv7jPcJT'
- 'bDS3NwQK/2bJnvY7iRPXWFbXa6xh6daf1XAG9/hOPE743p4akYlDqtJjW5TaXP0BGs/JvlK91m'
- 'xUdo+b9cZOsw5WxR69bV+362pGDvD1ZOtKJUYd+/m70Xv9T3skLB8Xj7X/KahE6P7RlwgXnsJw'
- 'QBliVfb3KjU/8Gh17B5zXlIJgmP4WAT5Db+KdQlv9zjAjpC+8LK75Pmz+7OXgI1fLXvkF/ANFx'
- 'u4J/xD4mKzWSwd0AdIK7ggiVVIXaXscQfkTyxdRRmM5Kz8n3D9qv7oWbG2P7PsGR9anv/ulXmU'
- 'BRZHd/KeVZoHXhFQpbZX92p+CVQrNp6j9tIrNfxis1LbBxtzXlOnwR4V932YoNNCz3dblZpBt4'
- 'eLJhEs/eUpklHlxVZisK+t9KL4lKFLLyqRbiu9qNxwq/SSgu2u15ReYBdXeVNfiWFjvK32knL7'
- '22ovKdjpNBcs/olh5gLpij0kaEclGMNGxyCsGsbDNqwTZnPMBUA6HBFkM7CjDg1zz2gMG82IsO'
- 'iRDkeEldR0OCIbq40ec8FiRkakzYjguA+NCYOwsihHDMJa4plx5hLDWuIMN8VsRKYkFQMm2bAk'
- 'hSWJbGrSIKwsTumjEWwUo5HxLkcjtOqom27VqsaE3qqpVmWPidGsKUjFsNFtK1aNJXrbilVjA4'
- 'PMBZrO8LHXojk9I8YU98Q5PRNyQelnEn0GAZczfOwVyp6AwNNB+e+0Sl4T7lCr5DV5ouQ1KSYy'
- 'bSWvyRMlr8kTJa/JtCmcQdM5Mc5NWAs8x4YXpPs5LigK0v0c+6og3c+NnWEm4I/nhcdN6BHnQy'
- 'Y4s+dDJijuvBoxCJicZxcgMCXOcRO4IyDDBL1xKmSC3jiljDj0xqmJSWZC9cYpbrLbqo8CS16w'
- 'Gxom6IzTqmAQVh/PnQ+TjL87J1+ROLTSi8KK7FmtHx7Va7wNw7Z5VGwemG0T/+MTGMgQyn4Djl'
- '9lfr6SqAQ39YfCzyzp3sa4ybshxVDMM5CHvRknDIkGsNFNtC/rLThBXyhBmZJ28/mRT+lH30Kq'
- 'teMS721o2qQOCs5DxSMYB0RpzcpkI/wRuRXeku7d4q5fRZ1g26/if/N8gEC3URVlYqtZbB4HyC'
- 'EjnYAAs2CEPA79Yi3Ywf3J8KAv9+DDCyKiL4qoS3cN9yaUABkcb+8nMjj+RgYC01brJRg0p3C9'
- 'm3HCYFrIJWDVQQPMIpzY/QYJg1wCvq6FHwtlGef0pT0d1NNk0sEXU0nxcirZZVgHUr5Tb1b16w'
- 'fsfKBRS1aCv4A4k6aJtjRtSsYog3rFaxdqL7wmk5TsrdTKHx48b6V3Vlt6pwZk9NnBcxaAf8E3'
- '5EZxv1KDbbVeoySt+OkO5LqHAb/vcuHDGmJkiVlWkw2uQeGplK0ncjgv+JLueZvLE+4wOmBJzT'
- 'xFGqBTt89/wMlgT5sDBBd+aslEuBpUUsbfu7ez/WDj1kBE9crErffuv6uhpXrAtd7b1kgg2tre'
- '1CiKXe9v3WJoI7y5sn1LwxjCG/fu3dXQQdL7m4zialD2rmxsbN77YIU/uetfjmLS2ROpWvJ/op'
- 'R09vzxJ51/LU7JOoNDTOFauSdpAucbUKBUPS6DzkVITcF/Ahic9A6Pq83KEdDjsIF7gEpdOHkO'
- '9DZuYK7pFfDtnslVPTwgFGFUfq1+vH9ASWPjkJyZ8t2id38NS2O8ZCWY8NAHW0IKCV/RFLjUdU'
- '7LEeM5NlLyGdS13titVK1gNQ2MKWF26KEC5LA0IOi5B3Opa344bVjr03lwH+TBfJmoIuku6Qyl'
- 'mpwRUIqa4nRGp6iAMm0paupEipridEanqClOZyhFHRKZthQVksvwQvBEcmlRcmluHDElGBpKo/'
- 'IxUH44MtFJ+SVSPoZKDMf6UGyMlM8LSo1iWr+8zl9i+rVBvqeXO+JlrBjgJotQ0iC8mu3r544A'
- 'RkU/NyHZqM4FYvpFwWivEY3ZXNgRs4uxsCO+IRgLO9qYzBnRNuV9RjS+GjgTigYzjYcdMWUdDz'
- 'viO4HxsCPkaV7YEe+9vLAjvgzwwo5xFT0b6ohXVWdDHfEtwNlQRxfvhIe4CS+XCiEZXuYX4BAx'
- 'YS5wL3cpe+ub3QF532TLMyKTf0efy0qN3eN9Wudme5m7euU7C3BOu1mvTVERmY+DazcDXDlmre'
- 'ivprSs8+4ZMWUyZnTUmRN590xisC3vnhlKt/LuC3wBo/PuC2Im05Z3XziRd1/gex+dd1/IZJkL'
- '2OSiSDMXPEtdFBdy3BOn56KeEETA5WLPgEHA5WJqiLkAuCRGmAuepS6Ji+ZqG7PXS6Eu6F+XEk'
- 'ZPzF4vDefNGWA+cvUbXHvPw5SEZ4AFPnroM8CCmA/z/Bg2um1ngAU+eugzwAIcPcIzwCKveDoD'
- '2ItiIdV2CFjkFa8PAYvx8EgAXBb1isfL89cjb3S5dMSxv+4Oti7Pl/gsrC/Pl8TrWmyUlF9i5f'
- 'Xl+VKi3yAQu8Rn4Sgqv8zKR0n5ZbE0xD1R+WVWPkrKL7PyUVJ+mX0pil5wLeSCXnBNLGe4J67m'
- 'ayEXFHgt5IITf41NgDfikZtdTIBR4zrPH13kr/ARnC7y7RVxPby7j2GjaxDQrfARXN/kr/ARnF'
- 'ziBitvkwluiJU890QT3Ai5oAlu8HKyyQQ3QPk3iAuYYFWMFua827AJmoeQuLHBYCBnKFa5EqRr'
- 'Pd7u3PzC4lVexXTyslfFjQyzRputhmJRw9VE1iAQu5ofMc8Q3ul8M3+19QzhHbe/9QxhjResfo'
- 'awJt7RI4qRzdZYrH6GsJYYMAjErsGCfZO44GW/yBfm9cObS3QRthuUjhuQZ1Qrj32vgLt8bXZ2'
- '9rr/afHwSOc0BR5vjMy8LtbSzBzNvB4KRjOvJ8I2ELzOkxVDM9/hyYqR1e6I9Tz3RKvdYU+Lkd'
- 'XuxM3Q0Gp32NMcfFhwv4vVHHpYoORt84piU+TwIhCD99X5xfkTkZpPFC/Fav5uojU9wLA3xYZe'
- 'YQ4ZfJPHrV9gbHKc1S8wNjnOOjiYLU5OHLLeltjMcU+03lbIBa23xcmJQ9bb4uTEQettc8xwyH'
- 'rbYktxT4zW21z0cMh627LfIOCyzVtfXNkPIt//Bq9BHrip1muQjznO6tcgH4sHenrjZIKPWXn9'
- 'GuRjjrP6NcjHHGfjqNFDMchc0AQPxccp7okmeBhyQRM8TPQYBFwe9g+YNyU/jJS6KI/b/g9d1X'
- 'pTUuRCkX5TUhQ/1POn35QUT7wpKSaUQSC2yIUiF5XfZRO4pPyuKGa5Jyq/G3JB5XfZBC4pv8tV'
- 'roSy9+Gk8+qkA1+m7LPy9DLlgJeLfplyIPa18glS/oDF6pcpBxzb9MuUAw7v9DKlws6nX6ZUxE'
- 'GGe6LylZALKl9h59MvUyrsfAl0vkfh+xZ0vkeiYl7C4NJ9FHJBgY8S5n0LOt+jQTMiAI/FJDdh'
- 'nesxl6gSlCk8Tpoh4G75WI0bhHSFCVOi+l+B9yVc')))
+ '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'
+ 'F80kCIT1GeDvtw/wc6pIc/')))
_INDEX = {
f.name: {
'descriptor': f,
diff --git a/api/features_servicer.py b/api/features_servicer.py
index 2ae49c5..589afcb 100644
--- a/api/features_servicer.py
+++ b/api/features_servicer.py
@@ -15,7 +15,6 @@
from api.api_proto import features_pb2
from api.api_proto import features_prpc_pb2
from businesslogic import work_env
-from features import component_helpers
from features import features_bizobj
from framework import exceptions
from framework import framework_bizobj
@@ -304,20 +303,3 @@
we.DeleteHotlist(hotlist_id)
return features_pb2.DeleteHotlistResponse()
-
- # TODO(https://crbug.com/monorail/7515): Replace or delete PredictComponent.
- @monorail_servicer.PRPCMethod
- def PredictComponent(self, mc, request):
- """Predict the component of an issue based on the given text."""
- with work_env.WorkEnv(mc, self.services) as we:
- project = we.GetProjectByName(request.project_name)
- config = we.GetProjectConfig(project.project_id)
-
- component_ref = None
- component_id = component_helpers.PredictComponent(request.text, config)
-
- if component_id:
- component_ref = converters.ConvertComponentRef(component_id, config)
-
- result = features_pb2.PredictComponentResponse(component_ref=component_ref)
- return result
diff --git a/api/test/features_servicer_test.py b/api/test/features_servicer_test.py
index 7a7180b..177bc3f 100644
--- a/api/test/features_servicer_test.py
+++ b/api/test/features_servicer_test.py
@@ -8,23 +8,15 @@
from __future__ import division
from __future__ import absolute_import
-import json
-import mock
import unittest
import mox
-from google.protobuf import wrappers_pb2
-
from components.prpc import codes
from components.prpc import context
-from components.prpc import server
-from api import converters
from api.api_proto import common_pb2
from api.api_proto import features_pb2
from api.api_proto import features_objects_pb2
-from api.api_proto import issue_objects_pb2
-from framework import authdata
from framework import exceptions
from framework import monorailcontext
from framework import permissions
@@ -35,9 +27,6 @@
from services import features_svc
from services import service_manager
-# Import component_helpers_test to mock cloudstorage before it is imported by
-# component_helpers via features servicer.
-from features.test import component_helpers_test
from api import features_servicer # pylint: disable=ungrouped-imports
@@ -95,26 +84,6 @@
self.PAST_TIME = 123456
- # For testing PredictComponent
- self._ml_engine = component_helpers_test.FakeMLEngine(self)
- self._top_words = None
- self._components_by_index = None
-
- mock.patch(
- 'services.ml_helpers.setup_ml_engine', lambda: self._ml_engine).start()
- mock.patch(
- 'features.component_helpers._GetTopWords',
- lambda _: self._top_words).start()
- mock.patch('cloudstorage.open', self.cloudstorageOpen).start()
- mock.patch('settings.component_features', 5).start()
-
- self.addCleanup(mock.patch.stopall)
-
- def cloudstorageOpen(self, name, mode):
- """Create a file mock that returns self._components_by_index when read."""
- open_fn = mock.mock_open(read_data=json.dumps(self._components_by_index))
- return open_fn(name, mode)
-
def tearDown(self):
self.mox.UnsetStubs()
self.mox.ResetAll()
@@ -985,55 +954,3 @@
self.assertTrue(
hotlist.hotlist_id in self.services.features.expunged_hotlist_ids)
-
- def testPredictComponent_Normal(self):
- """Test normal case when predicted component exists."""
- component_id = self.services.config.CreateComponentDef(
- cnxn=None, project_id=self.project.project_id, path='Ruta>Baga',
- docstring='', deprecated=False, admin_ids=[], cc_ids=[], created=None,
- creator_id=None, label_ids=[])
-
- self._top_words = {
- 'foo': 0,
- 'bar': 1,
- 'baz': 2}
- self._components_by_index = {
- '0': '123',
- '1': str(component_id),
- '2': '789'}
- self._ml_engine.expected_features = [3, 0, 1, 0, 0]
- self._ml_engine.scores = [5, 10, 3]
-
- request = features_pb2.PredictComponentRequest(
- project_name='proj',
- text='foo baz foo foo')
- mc = monorailcontext.MonorailContext(
- self.services, cnxn=self.cnxn, requester='owner@example.com')
- result = self.CallWrapped(self.features_svcr.PredictComponent, mc, request)
-
- self.assertEqual(
- common_pb2.ComponentRef(
- path='Ruta>Baga'),
- result.component_ref)
-
- def testPredictComponent_NoPrediction(self):
- """Test case when no component id was predicted."""
- self._top_words = {
- 'foo': 0,
- 'bar': 1,
- 'baz': 2}
- self._components_by_index = {
- '0': '123',
- '1': '456',
- '2': '789'}
- self._ml_engine.expected_features = [3, 0, 1, 0, 0]
- self._ml_engine.scores = [5, 10, 3]
-
- request = features_pb2.PredictComponentRequest(
- project_name='proj',
- text='foo baz foo foo')
- mc = monorailcontext.MonorailContext(
- self.services, cnxn=self.cnxn, requester='owner@example.com')
- result = self.CallWrapped(self.features_svcr.PredictComponent, mc, request)
-
- self.assertEqual(common_pb2.ComponentRef(), result.component_ref)
diff --git a/api/test_call b/api/test_call
index 5455241..e8c3320 100755
--- a/api/test_call
+++ b/api/test_call
@@ -57,15 +57,9 @@
import errno
import json
import logging
-import os
import sys
-monorail_dir = os.path.dirname(os.path.abspath(__file__ + '/..'))
-third_party_path = os.path.join(monorail_dir, 'third_party')
-if third_party_path not in sys.path:
- sys.path.insert(0, third_party_path)
-
import httplib2
from oauth2client.client import GoogleCredentials
diff --git a/api/v3/api_proto/issue_objects.proto b/api/v3/api_proto/issue_objects.proto
index 4f31aaf..790ea4b 100644
--- a/api/v3/api_proto/issue_objects.proto
+++ b/api/v3/api_proto/issue_objects.proto
@@ -156,7 +156,7 @@
// A possibly rule-derived component for the issue.
// Next available tag: 3
message ComponentValue {
- // The component.
+ // AIP resource name of the component.
string component = 1 [
(google.api.resource_reference) = { type: "api.crbug.com/ComponentDef" }
];
diff --git a/api/v3/api_proto/project_objects.proto b/api/v3/api_proto/project_objects.proto
index 21f4bc6..39c5517 100644
--- a/api/v3/api_proto/project_objects.proto
+++ b/api/v3/api_proto/project_objects.proto
@@ -317,7 +317,7 @@
// the API will always return ComponentDef names with format:
// projects/{project}/componentDefs/<component_def_id>.
// However the API will accept ComponentDef names with formats:
- // projects/{project}/componentDefs/<component_def_id>|<value>.
+ // projects/{project}/componentDefs/<component_def_id|value>.
string name = 1;
// String value of the component, ie 'Tools>Stability' or 'Blink'.
string value = 2;
diff --git a/api/v3_test_call.py b/api/v3_test_call.py
index 6d5b01a..c7eaa2c 100644
--- a/api/v3_test_call.py
+++ b/api/v3_test_call.py
@@ -4,11 +4,6 @@
#!/usr/bin/env python
"""
-This script requires `google-auth` 1.15.0 or higher.
-To update this for monorail's third_party run the following from
-monorail/third_party/google:
-bash ./update.sh 1.15.0
-
This is an example of how a script might make calls to monorail's v3 pRPC API.
Usage example:
@@ -24,13 +19,8 @@
import json
import logging
import os
-import sys
import requests
-monorail_dir = os.path.dirname(os.path.abspath(__file__ + '/..'))
-third_party_path = os.path.join(monorail_dir, 'third_party')
-if third_party_path not in sys.path:
- sys.path.insert(0, third_party_path)
# Older versions of https://github.com/googleapis/google-auth-library-python
# do not have the fetch_id_token() method called below.
diff --git a/app.yaml b/app.yaml
index 2ee6fff..d7b8416 100644
--- a/app.yaml
+++ b/app.yaml
@@ -97,9 +97,6 @@
includes:
- gae_ts_mon
-env_variables:
- GAE_USE_SOCKETS_HTTPLIB : ''
-
skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
@@ -108,4 +105,3 @@
- ^(.*/)?\..*$
- node_modules/
- venv/
-- third_party/tools/
diff --git a/appengine_config.py b/appengine_config.py
index 5259660..67b5a4c 100644
--- a/appengine_config.py
+++ b/appengine_config.py
@@ -9,16 +9,11 @@
from __future__ import absolute_import
import os
-import sys
-# Enable third-party imports
from google.appengine.ext import vendor
-vendor.add(os.path.join(os.path.dirname(__file__), 'third_party'))
-# Set path to your libraries folder.
+# Add libraries installed in the lib/ folder.
lib_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
-
-# Add libraries installed in the path folder.
vendor.add(lib_path)
# Add libraries to pkg_resources working set to find the distribution.
import pkg_resources
@@ -38,4 +33,4 @@
from google.rpc import status_pb2
from components import utils
-utils.fix_protobuf_package()
\ No newline at end of file
+utils.fix_protobuf_package()
diff --git a/cron.yaml b/cron.yaml
index 81d565b..581a9d6 100644
--- a/cron.yaml
+++ b/cron.yaml
@@ -24,9 +24,6 @@
- description: send ts_mon metrics
url: /internal/cron/ts_mon/send
schedule: every 10 minutes
-- description: export spam model training examples
- url: /_cron/spamDataExport
- schedule: every day 09:00
- description: fetch api clients from luci-config
url: /_cron/loadApiClientConfigs
schedule: every 30 minutes synchronized
@@ -36,12 +33,6 @@
- description: ping all issues with date fields that arrived
url: /_cron/dateAction
schedule: every day 12:00
-- description: retrain spam model with GCS training data
- url: /_cron/spamTraining
- schedule: every day 10:00
-- description: export component model training examples
- url: /_cron/componentDataExport
- schedule: every mon 9:00
- description: sync monorail's user lists with wipeout-lite
url: /_cron/wipeoutSync
schedule: every day 09:00
diff --git a/dev-services.yml b/dev-services.yml
index 0c93db3..466127b 100644
--- a/dev-services.yml
+++ b/dev-services.yml
@@ -9,11 +9,6 @@
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: 'monorail'
command: mysqld --sql_mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
- redis:
- image: 'redis:alpine'
- container_name: 'redis'
- ports:
- - '6379:6379'
cloud-tasks-emulator:
# As of 9/18/2020 latest tag is built from source at
# https://github.com/aertje/cloud-tasks-emulator/commit/ff9a1afc8f3aeedbc6ca1f468b2c53b74c18a6e6
@@ -24,7 +19,6 @@
environment:
APP_ENGINE_EMULATOR_HOST: 'http://host.docker.internal:8080'
command: >
- --queue projects/monorail-staging/locations/us-central1/queues/componentexport
--queue projects/monorail-staging/locations/us-central1/queues/default
--queue projects/monorail-staging/locations/us-central1/queues/notifications
--queue projects/monorail-staging/locations/us-central1/queues/outboundemail
diff --git a/features/alert2issue.py b/features/alert2issue.py
index fbaf5d9..daf72ca 100644
--- a/features/alert2issue.py
+++ b/features/alert2issue.py
@@ -10,7 +10,7 @@
import itertools
import logging
-import rfc822
+import email.utils
import settings
from businesslogic import work_env
@@ -227,7 +227,7 @@
owner_email = owner_email.strip()
if not owner_email:
return framework_constants.NO_USER_SPECIFIED
- emails = [addr for _, addr in rfc822.AddressList(owner_email)]
+ emails = [addr for _, addr in email.utils.getaddresses([owner_email])]
return user_svc.LookupExistingUserIDs(
cnxn, emails).get(owner_email) or framework_constants.NO_USER_SPECIFIED
@@ -237,7 +237,7 @@
cc_emails = cc_emails.strip()
if not cc_emails:
return []
- emails = [addr for _, addr in rfc822.AddressList(cc_emails)]
+ emails = [addr for _, addr in email.utils.getaddresses([cc_emails])]
return [userID for _, userID
in user_svc.LookupExistingUserIDs(cnxn, emails).iteritems()
if userID is not None]
diff --git a/features/autolink.py b/features/autolink.py
index 2787b9c..67c898a 100644
--- a/features/autolink.py
+++ b/features/autolink.py
@@ -33,8 +33,8 @@
import logging
import re
-import urllib
-import urlparse
+from six.moves import urllib
+from six.moves.urllib.parse import urlparse
import settings
from features import autolink_constants
diff --git a/features/banspammer.py b/features/banspammer.py
index 4b66251..a6be311 100644
--- a/features/banspammer.py
+++ b/features/banspammer.py
@@ -13,6 +13,7 @@
import time
from framework import cloud_tasks_helpers
+from framework import flaskservlet
from framework import framework_helpers
from framework import permissions
from framework import jsonfeed
@@ -56,7 +57,11 @@
mr, mr.viewed_user_auth.user_view.profile_url, include_project=False,
saved=1, ts=int(time.time()))
+ # def PostBanSpammerPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+# when convert to flask switch jsonfeed.FlaskInternalTask
class BanSpammerTask(jsonfeed.InternalTask):
"""This task will update all of the comments and issues created by the
target user with is_spam=True, and also add a manual verdict attached
@@ -91,7 +96,18 @@
self.services.issue, self.services.user, comment.id,
reporter_id, is_spammer)
+ # remove the self.response.body when convert to flask
self.response.body = json.dumps({
'comments': len(comments),
'issues': len(issues),
})
+ # return json.dumps({
+ # 'comments': len(comments),
+ # 'issues': len(issues),
+ # })
+
+ # def GetBanSpammer(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostBanSpammer(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/component_helpers.py b/features/component_helpers.py
deleted file mode 100644
index 1392f0b..0000000
--- a/features/component_helpers.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import json
-import logging
-import re
-
-import settings
-import cloudstorage
-
-from features import generate_dataset
-from framework import framework_helpers
-from services import ml_helpers
-from tracker import tracker_bizobj
-
-from googleapiclient import discovery
-from oauth2client.client import GoogleCredentials
-
-
-MODEL_NAME = 'projects/{}/models/{}'.format(
- settings.classifier_project_id, settings.component_model_name)
-
-
-def _GetTopWords(trainer_name): # pragma: no cover
- # TODO(carapew): Use memcache to get top words rather than storing as a
- # variable.
- credentials = GoogleCredentials.get_application_default()
- storage = discovery.build('storage', 'v1', credentials=credentials)
- request = storage.objects().get_media(
- bucket=settings.component_ml_bucket,
- object=trainer_name + '/topwords.txt')
- response = request.execute()
-
- # This turns the top words list into a dictionary for faster feature
- # generation.
- return {word: idx for idx, word in enumerate(response.split())}
-
-
-def _GetComponentsByIndex(trainer_name):
- # TODO(carapew): Memcache the index mapping file.
- mapping_path = '/%s/%s/component_index.json' % (
- settings.component_ml_bucket, trainer_name)
- logging.info('Mapping path full name: %r', mapping_path)
-
- with cloudstorage.open(mapping_path, 'r') as index_mapping_file:
- logging.info('Index component mapping opened')
- mapping = index_mapping_file.read()
- logging.info(mapping)
- return json.loads(mapping)
-
-
-@framework_helpers.retry(3)
-def _GetComponentPrediction(ml_engine, instance):
- """Predict the component from the default model based on the provided text.
-
- Args:
- ml_engine: An ML Engine instance for making predictions.
- instance: The dict object returned from ml_helpers.GenerateFeaturesRaw
- containing the features generated from the provided text.
-
- Returns:
- The index of the component with the highest score. ML engine's predict
- api returns a dict of the format
- {'predictions': [{'classes': ['0', '1', ...], 'scores': [.00234, ...]}]}
- where each class has a score at the same index. Classes are sequential,
- so the index of the highest score also happens to be the component's
- index.
- """
- body = {'instances': [{'inputs': instance['word_features']}]}
- request = ml_engine.projects().predict(name=MODEL_NAME, body=body)
- response = request.execute()
-
- logging.info('ML Engine API response: %r' % response)
- scores = response['predictions'][0]['scores']
-
- return scores.index(max(scores))
-
-
-def PredictComponent(raw_text, config):
- """Get the component ID predicted for the given text.
-
- Args:
- raw_text: The raw text for which we want to predict a component.
- config: The config of the project. Used to decide if the predicted component
- is valid.
-
- Returns:
- The component ID predicted for the provided component, or None if no
- component was predicted.
- """
- # Set-up ML engine.
- ml_engine = ml_helpers.setup_ml_engine()
-
- # Gets the timestamp number from the folder containing the model's trainer
- # in order to get the correct files for mappings and features.
- request = ml_engine.projects().models().get(name=MODEL_NAME)
- response = request.execute()
-
- version = re.search(r'v_(\d+)', response['defaultVersion']['name']).group(1)
- trainer_name = 'component_trainer_%s' % version
-
- top_words = _GetTopWords(trainer_name)
- components_by_index = _GetComponentsByIndex(trainer_name)
- logging.info('Length of top words list: %s', len(top_words))
-
- clean_text = generate_dataset.CleanText(raw_text)
- instance = ml_helpers.GenerateFeaturesRaw(
- [clean_text], settings.component_features, top_words)
-
- # Get the component id with the highest prediction score. Component ids are
- # stored in GCS as strings, but represented in the app as longs.
- best_score_index = _GetComponentPrediction(ml_engine, instance)
- component_id = components_by_index.get(str(best_score_index))
- if component_id:
- component_id = int(component_id)
-
- # The predicted component id might not exist.
- if tracker_bizobj.FindComponentDefByID(component_id, config) is None:
- return None
-
- return component_id
diff --git a/features/componentexport.py b/features/componentexport.py
deleted file mode 100644
index cadb6a8..0000000
--- a/features/componentexport.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-""" Tasks and handlers for maintaining the spam classifier model. These
- should be run via cron and task queue rather than manually.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import cloudstorage
-import datetime
-import logging
-import webapp2
-
-from google.appengine.api import app_identity
-
-from features.generate_dataset import build_component_dataset
-from framework import cloud_tasks_helpers
-from framework import servlet
-from framework import urls
-
-
-class ComponentTrainingDataExport(webapp2.RequestHandler):
- """Trigger a training data export task"""
- def get(self):
- logging.info('Training data export requested.')
- task = {
- 'app_engine_http_request':
- {
- 'http_method': 'GET',
- 'relative_uri': urls.COMPONENT_DATA_EXPORT_TASK,
- }
- }
- cloud_tasks_helpers.create_task(task, queue='componentexport')
-
-
-class ComponentTrainingDataExportTask(servlet.Servlet):
- """Export training data for issues and their assigned components, to be used
- to train a model later.
- """
- def get(self):
- logging.info('Training data export initiated.')
- bucket_name = app_identity.get_default_gcs_bucket_name()
- logging.info('Bucket name: %s', bucket_name)
- date_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
-
- logging.info('Opening cloud storage')
- gcs_file = cloudstorage.open('/' + bucket_name
- + '/component_training_data/'
- + date_str + '.csv',
- content_type='text/csv', mode='w')
-
- logging.info('GCS file opened')
-
- gcs_file = build_component_dataset(self.services.issue, gcs_file)
-
- gcs_file.close()
diff --git a/features/dateaction.py b/features/dateaction.py
index a525db1..169f582 100644
--- a/features/dateaction.py
+++ b/features/dateaction.py
@@ -39,6 +39,8 @@
TEMPLATE_PATH = framework_constants.TEMPLATE_PATH
+
+# TODO: change to FlaskInternalTask when convert to Flask
class DateActionCron(jsonfeed.InternalTask):
"""Find and process issues with date-type values that arrived today."""
@@ -84,6 +86,12 @@
urls.ISSUE_DATE_ACTION_TASK + '.do', params)
cloud_tasks_helpers.create_task(task)
+ # def GetDateActionCron(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostDateActionCron(self, **kwargs):
+ # return self.handler(**kwargs)
+
def _GetTimestampRange(now):
"""Return a (min, max) timestamp range for today."""
@@ -225,3 +233,9 @@
field, timestamp = ping
date_str = timestr.TimestampToDateWidgetStr(timestamp)
return 'The %s date has arrived: %s' % (field.field_name, date_str)
+
+ # def GetIssueDateActionTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueDateActionTask(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/filterrules.py b/features/filterrules.py
index 3b1277e..724d7e2 100644
--- a/features/filterrules.py
+++ b/features/filterrules.py
@@ -15,6 +15,7 @@
from tracker import tracker_constants
+# TODO: change to FlaskInternalTask when convert to flask
class RecomputeDerivedFieldsTask(jsonfeed.InternalTask):
"""JSON servlet that recomputes derived fields on a batch of issues."""
@@ -35,7 +36,14 @@
'success': True,
}
+ # def GetRecomputeDerivedFieldsTask(self, **kwargs):
+ # return self.handler(**kwargs)
+ # def PostRecomputeDerivedFieldsTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO: change to FlaskInternalTask when convert to Flask
class ReindexQueueCron(jsonfeed.InternalTask):
"""JSON servlet that reindexes some issues each minute, as needed."""
@@ -48,3 +56,9 @@
return {
'num_reindexed': num_reindexed,
}
+
+ # def GetReindexQueueCron(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostReindexQueueCron(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/hotlistcreate.py b/features/hotlistcreate.py
index 448697b..fa8946f 100644
--- a/features/hotlistcreate.py
+++ b/features/hotlistcreate.py
@@ -12,16 +12,14 @@
import time
import re
-from features import features_constants
from features import hotlist_helpers
from framework import exceptions
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_helpers
from framework import permissions
from framework import servlet
-from framework import urls
from services import features_svc
-from proto import api_pb2_v1
_MSG_HOTLIST_NAME_NOT_AVAIL = 'You already have a hotlist with that name.'
@@ -115,3 +113,9 @@
mr, hotlist_helpers.GetURLOfHotlist(
mr.cnxn, hotlist, self.services.user),
include_project=False)
+
+ # def GetCreateHotlist(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostCreateHotlist(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/hotlistdetails.py b/features/hotlistdetails.py
index d3bf3b2..f9c0435 100644
--- a/features/hotlistdetails.py
+++ b/features/hotlistdetails.py
@@ -14,6 +14,7 @@
from features import hotlist_helpers
from framework import framework_bizobj
+from framework import flaskservlet
from framework import framework_helpers
from framework import servlet
from framework import permissions
@@ -32,7 +33,7 @@
"""A page with hotlist details and editing options."""
_PAGE_TEMPLATE = 'features/hotlist-details-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.HOTLIST_TAB_DETAILS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.HOTLIST_TAB_DETAILS
def AssertBasePermission(self, mr):
super(HotlistDetails, self).AssertBasePermission(mr)
@@ -121,3 +122,9 @@
if 'default_col_spec' in post_data:
default_col_spec = post_data['default_col_spec']
return summary, description, name, default_col_spec
+
+ # def GetHotlistDetailsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostHotlistDetailsPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/hotlistissues.py b/features/hotlistissues.py
index 8743772..78ba007 100644
--- a/features/hotlistissues.py
+++ b/features/hotlistissues.py
@@ -20,6 +20,7 @@
from features import features_constants
from features import hotlist_helpers
from framework import exceptions
+from framework import flaskservlet
from framework import servlet
from framework import sorting
from framework import permissions
@@ -46,7 +47,7 @@
"""HotlistIssues is a page that shows the issues of one hotlist."""
_PAGE_TEMPLATE = 'features/hotlist-issues-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.HOTLIST_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.HOTLIST_TAB_ISSUES
def AssertBasePermission(self, mr):
"""Check that the user has permission to even visit this page."""
@@ -347,3 +348,9 @@
url_params=url_params)})
return grid_view_data
+
+ # def GetHotlistIssuesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostHotlistIssuesPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/hotlistissuescsv.py b/features/hotlistissuescsv.py
index 3ae3f3b..2b35dad 100644
--- a/features/hotlistissuescsv.py
+++ b/features/hotlistissuescsv.py
@@ -60,3 +60,6 @@
page_data = hotlistissues.HotlistIssues.GatherPageData(self, mr)
return csv_helpers.ReformatRowsForCSV(
mr, page_data, '%d/csv' % mr.hotlist_id)
+
+ # def GetHotlistIssuesCsvPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/hotlistpeople.py b/features/hotlistpeople.py
index 1eb00ff..c574469 100644
--- a/features/hotlistpeople.py
+++ b/features/hotlistpeople.py
@@ -16,6 +16,7 @@
from features import hotlist_helpers
from features import hotlist_views
from framework import framework_helpers
+from framework import flaskservlet
from framework import framework_views
from framework import paginate
from framework import permissions
@@ -30,7 +31,7 @@
_PAGE_TEMPLATE = 'project/people-list-page.ezt'
# Note: using the project's peoplelist page template. minor edits were
# to make it compatible with HotlistPeopleList
- _MAIN_TAB_MODE = servlet.Servlet.HOTLIST_TAB_PEOPLE
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.HOTLIST_TAB_PEOPLE
def AssertBasePermission(self, mr):
super(HotlistPeopleList, self).AssertBasePermission(mr)
@@ -218,6 +219,8 @@
def ProcessRemoveMembers(self, mr, post_data, hotlist_url):
"""Process the user's request to remove members."""
+ #TODO: convert for flask
+ #remove_strs = post_data.getlist('remove')
remove_strs = post_data.getall('remove')
logging.info('remove_strs = %r', remove_strs)
remove_ids = set(
@@ -250,3 +253,9 @@
mr, '%s%s' % (
hotlist_url, urls.HOTLIST_PEOPLE),
saved=1, ts=int(time.time()), include_project=False)
+
+ # def GetHotlistPeoplePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostHotlistPeoplePage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/inboundemail.py b/features/inboundemail.py
index 6326dde..d9c36d3 100644
--- a/features/inboundemail.py
+++ b/features/inboundemail.py
@@ -13,17 +13,15 @@
import os
import re
import time
-import urllib
+from six.moves import urllib
import ezt
-from google.appengine.api import mail
from google.appengine.ext.webapp.mail_handlers import BounceNotificationHandler
import webapp2
import settings
-from businesslogic import work_env
from features import alert2issue
from features import commitlogcommands
from features import notify_helpers
@@ -36,7 +34,6 @@
from framework import sql
from framework import template_helpers
from proto import project_pb2
-from tracker import tracker_helpers
TEMPLATE_PATH_BASE = framework_constants.TEMPLATE_PATH
@@ -65,17 +62,25 @@
TEMPLATE_PATH_BASE + template_path,
compress_whitespace=False, base_format=ezt.FORMAT_RAW)
+ # def HandleInboundEmail(self, project_addr=None):
+ # if self.request.method == 'POST':
+ # self.post(project_addr)
+ # elif self.request.method == 'GET':
+ # self.get(project_addr)
+
def get(self, project_addr=None):
logging.info('\n\n\nGET for InboundEmail and project_addr is %r',
project_addr)
- self.Handler(mail.InboundEmailMessage(self.request.body),
- urllib.unquote(project_addr))
+ self.Handler(
+ mail.InboundEmailMessage(self.request.body),
+ urllib.parse.unquote(project_addr))
def post(self, project_addr=None):
logging.info('\n\n\nPOST for InboundEmail and project_addr is %r',
project_addr)
- self.Handler(mail.InboundEmailMessage(self.request.body),
- urllib.unquote(project_addr))
+ self.Handler(
+ mail.InboundEmailMessage(self.request.body),
+ urllib.parse.unquote(project_addr))
def Handler(self, inbound_email_message, project_addr):
"""Process an inbound email message."""
@@ -287,6 +292,7 @@
BAD_WRAP_RE = re.compile('=\r\n')
BAD_EQ_RE = re.compile('=3D')
+
class BouncedEmail(BounceNotificationHandler):
"""Handler to notice when email to given user is bouncing."""
diff --git a/features/notify.py b/features/notify.py
index c285c76..425041e 100644
--- a/features/notify.py
+++ b/features/notify.py
@@ -219,6 +219,12 @@
return email_tasks
+ # def GetNotifyIssueChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostNotifyIssueChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
class NotifyBlockingChangeTask(notify_helpers.NotifyTaskBase):
"""JSON servlet that notifies appropriate users after a blocking change."""
@@ -350,6 +356,12 @@
return one_issue_email_tasks
+ # def GetNotifyBlockingChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostNotifyBlockingChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
class NotifyBulkChangeTask(notify_helpers.NotifyTaskBase):
"""JSON servlet that notifies appropriate users after a bulk edit."""
@@ -712,6 +724,12 @@
return subject, body
+ # def GetNotifyBulkChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostNotifyBulkChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
# For now, this class will not be used to send approval comment notifications
# TODO(jojwang): monorail:3588, it might make sense for this class to handle
@@ -901,6 +919,12 @@
return list(set(recipient_ids))
+ # def GetNotifyApprovalChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostNotifyApprovalChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
class NotifyRulesDeletedTask(notify_helpers.NotifyTaskBase):
"""JSON servlet that sends one email."""
@@ -967,7 +991,14 @@
return email_tasks
+ # def GetNotifyRulesDeletedTask(self, **kwargs):
+ # return self.handler(**kwargs)
+ # def PostNotifyRulesDeletedTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO: change to FlaskInternalTask when convert to flask
class OutboundEmailTask(jsonfeed.InternalTask):
"""JSON servlet that sends one email.
@@ -1053,3 +1084,9 @@
return dict(
sender=sender, to=to, subject=subject, body=body, html_body=html_body,
reply_to=reply_to, references=references)
+
+ # def GetOutboundEmailTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostOutboundEmailTask(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/notify_helpers.py b/features/notify_helpers.py
index f22ed38..5f77307 100644
--- a/features/notify_helpers.py
+++ b/features/notify_helpers.py
@@ -123,6 +123,7 @@
return notified
+# TODO: change to FlaskInternalTask when convert to flask
class NotifyTaskBase(jsonfeed.InternalTask):
"""Abstract base class for notification task handler."""
diff --git a/features/pubsub.py b/features/pubsub.py
index a74ff22..86bd3ba 100644
--- a/features/pubsub.py
+++ b/features/pubsub.py
@@ -26,6 +26,7 @@
from framework import jsonfeed
+# TODO: change to FlaskInternalTask when convert to flask
class PublishPubsubIssueChangeTask(jsonfeed.InternalTask):
"""JSON servlet that pushes issue update messages onto a pub/sub topic."""
@@ -70,6 +71,12 @@
return {}
+ # def GetPublishPubsubIssueChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostPublishPubsubIssueChangeTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
def set_up_pubsub_api():
"""Attempts to build and return a pub/sub API client."""
diff --git a/features/rerankhotlist.py b/features/rerankhotlist.py
index fe235db..74365f6 100644
--- a/features/rerankhotlist.py
+++ b/features/rerankhotlist.py
@@ -19,6 +19,7 @@
from tracker import rerank_helpers
+# TODO: convert to FLaskJsonFeed while conver to flask
class RerankHotlistIssue(jsonfeed.JsonFeed):
"""Rerank an issue in a hotlist."""
@@ -134,3 +135,9 @@
lower, higher = features_bizobj.SplitHotlistIssueRanks(
mr.target_id, mr.split_above, untouched_items)
return rerank_helpers.GetInsertRankings(lower, higher, mr.moved_ids)
+
+ # def GetRerankHotlistIssuePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostRerankHotlistIssuePage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/savedqueries.py b/features/savedqueries.py
index 5cc1bc8..fb99fcf 100644
--- a/features/savedqueries.py
+++ b/features/savedqueries.py
@@ -15,6 +15,7 @@
from features import savedqueries_helpers
from framework import framework_helpers
+from framework import flaskservlet
from framework import permissions
from framework import servlet
from framework import urls
@@ -74,3 +75,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, '/u/%s%s' % (mr.viewed_username, urls.SAVED_QUERIES),
include_project=False, saved=1, ts=int(time.time()))
+
+ # def GetSavedQueriesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostSavedQueriesPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/features/spammodel.py b/features/spammodel.py
deleted file mode 100644
index dc5e715..0000000
--- a/features/spammodel.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-""" Tasks and handlers for maintaining the spam classifier model. These
- should be run via cron and task queue rather than manually.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import csv
-import logging
-import webapp2
-import cloudstorage
-import json
-
-from datetime import date
-from datetime import datetime
-from datetime import timedelta
-from google.appengine.api import app_identity
-
-from framework import cloud_tasks_helpers
-from framework import gcs_helpers
-from framework import servlet
-from framework import urls
-
-class TrainingDataExport(webapp2.RequestHandler):
- """Trigger a training data export task"""
- def get(self):
- task = cloud_tasks_helpers.generate_simple_task(
- urls.SPAM_DATA_EXPORT_TASK + '.do', {})
- cloud_tasks_helpers.create_task(task)
-
-
-BATCH_SIZE = 1000
-
-class TrainingDataExportTask(servlet.Servlet):
- """Export any human-labeled ham or spam from the previous day. These
- records will be used by a subsequent task to create an updated model.
- """
- CHECK_SECURITY_TOKEN = False
-
- def ProcessFormData(self, mr, post_data):
- logging.info("Training data export initiated.")
-
- bucket_name = app_identity.get_default_gcs_bucket_name()
- date_str = date.today().isoformat()
- export_target_path = '/' + bucket_name + '/spam_training_data/' + date_str
- total_issues = 0
-
- with cloudstorage.open(export_target_path, mode='w',
- content_type=None, options=None, retry_params=None) as gcs_file:
-
- csv_writer = csv.writer(gcs_file, delimiter=',', quotechar='"',
- quoting=csv.QUOTE_ALL, lineterminator='\n')
-
- since = datetime.now() - timedelta(days=7)
-
- # TODO: Further pagination.
- issues, first_comments, _count = (
- self.services.spam.GetTrainingIssues(
- mr.cnxn, self.services.issue, since, offset=0, limit=BATCH_SIZE))
- total_issues += len(issues)
- for issue in issues:
- # Cloud Prediction API doesn't allow newlines in the training data.
- fixed_summary = issue.summary.replace('\r\n', ' ')
- fixed_comment = first_comments[issue.issue_id].replace('\r\n', ' ')
- email = self.services.user.LookupUserEmail(mr.cnxn, issue.reporter_id)
- csv_writer.writerow([
- 'spam' if issue.is_spam else 'ham',
- fixed_summary.encode('utf-8'), fixed_comment.encode('utf-8'), email,
- ])
-
- comments = (
- self.services.spam.GetTrainingComments(
- mr.cnxn, self.services.issue, since, offset=0, limit=BATCH_SIZE))
- total_comments = len(comments)
- for comment in comments:
- # Cloud Prediction API doesn't allow newlines in the training data.
- fixed_comment = comment.content.replace('\r\n', ' ')
- email = self.services.user.LookupUserEmail(mr.cnxn, comment.user_id)
- csv_writer.writerow([
- 'spam' if comment.is_spam else 'ham',
- # Comments don't have summaries, so it's blank:
- '', fixed_comment.encode('utf-8'), email
- ])
-
- self.response.body = json.dumps({
- "exported_issue_count": total_issues,
- "exported_comment_count": total_comments,
- })
diff --git a/features/spamtraining.py b/features/spamtraining.py
deleted file mode 100644
index 625fa53..0000000
--- a/features/spamtraining.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""Cron job to train spam model with all spam data."""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import logging
-import settings
-import time
-
-from googleapiclient import discovery
-from googleapiclient import errors
-from google.appengine.api import app_identity
-from oauth2client.client import GoogleCredentials
-import webapp2
-
-class TrainSpamModelCron(webapp2.RequestHandler):
-
- """Submit a job to ML Engine which uploads a spam classification model by
- training on an already packaged trainer.
- """
- def get(self):
-
- credentials = GoogleCredentials.get_application_default()
- ml = discovery.build('ml', 'v1', credentials=credentials)
-
- app_id = app_identity.get_application_id()
- project_id = 'projects/%s' % (app_id)
- job_id = 'spam_trainer_%d' % time.time()
- training_input = {
- 'scaleTier': 'BASIC',
- 'packageUris': [
- settings.trainer_staging
- if app_id == "monorail-staging" else
- settings.trainer_prod
- ],
- 'pythonModule': 'trainer.task',
- 'args': [
- '--train-steps',
- '1000',
- '--verbosity',
- 'DEBUG',
- '--gcs-bucket',
- 'monorail-prod.appspot.com',
- '--gcs-prefix',
- 'spam_training_data',
- '--trainer-type',
- 'spam'
- ],
- 'region': 'us-central1',
- 'jobDir': 'gs://%s-mlengine/%s' % (app_id, job_id),
- 'runtimeVersion': '1.2'
- }
- job_info = {
- 'jobId': job_id,
- 'trainingInput': training_input
- }
- request = ml.projects().jobs().create(parent=project_id, body=job_info)
-
- try:
- response = request.execute()
- logging.info(response)
- except errors.HttpError, err:
- logging.error(err._get_reason())
diff --git a/features/test/banspammer_test.py b/features/test/banspammer_test.py
index e6fceff..edf7aba 100644
--- a/features/test/banspammer_test.py
+++ b/features/test/banspammer_test.py
@@ -12,7 +12,7 @@
import mock
import os
import unittest
-import urllib
+from six.moves import urllib
import webapp2
import settings
@@ -74,7 +74,7 @@
'app_engine_http_request':
{
'relative_uri': urls.BAN_SPAMMER_TASK + '.do',
- 'body': urllib.urlencode(params),
+ 'body': urllib.parse.urlencode(params),
'headers': {
'Content-type': 'application/x-www-form-urlencoded'
}
diff --git a/features/test/component_helpers_test.py b/features/test/component_helpers_test.py
deleted file mode 100644
index aa6c761..0000000
--- a/features/test/component_helpers_test.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-"""Unit tests for component prediction endpoints."""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import json
-import mock
-import sys
-import unittest
-
-from services import service_manager
-from testing import fake
-
-# Mock cloudstorage before it's imported by component_helpers
-sys.modules['cloudstorage'] = mock.Mock()
-from features import component_helpers
-
-
-class FakeMLEngine(object):
- def __init__(self, test):
- self.test = test
- self.expected_features = None
- self.scores = None
- self._execute_response = None
-
- def projects(self):
- return self
-
- def models(self):
- return self
-
- def predict(self, name, body):
- self.test.assertEqual(component_helpers.MODEL_NAME, name)
- self.test.assertEqual(
- {'instances': [{'inputs': self.expected_features}]}, body)
- self._execute_response = {'predictions': [{'scores': self.scores}]}
- return self
-
- def get(self, name):
- self.test.assertEqual(component_helpers.MODEL_NAME, name)
- self._execute_response = {'defaultVersion': {'name': 'v_1234'}}
- return self
-
- def execute(self):
- response = self._execute_response
- self._execute_response = None
- return response
-
-
-class ComponentHelpersTest(unittest.TestCase):
-
- def setUp(self):
- self.services = service_manager.Services(
- config=fake.ConfigService(),
- user=fake.UserService())
- self.project = fake.Project(project_name='proj')
-
- self._ml_engine = FakeMLEngine(self)
- self._top_words = None
- self._components_by_index = None
-
- mock.patch(
- 'services.ml_helpers.setup_ml_engine', lambda: self._ml_engine).start()
- mock.patch(
- 'features.component_helpers._GetTopWords',
- lambda _: self._top_words).start()
- mock.patch('cloudstorage.open', self.cloudstorageOpen).start()
- mock.patch('settings.component_features', 5).start()
-
- self.addCleanup(mock.patch.stopall)
-
- def cloudstorageOpen(self, name, mode):
- """Create a file mock that returns self._components_by_index when read."""
- open_fn = mock.mock_open(read_data=json.dumps(self._components_by_index))
- return open_fn(name, mode)
-
- def testPredict_Normal(self):
- """Test normal case when predicted component exists."""
- component_id = self.services.config.CreateComponentDef(
- cnxn=None, project_id=self.project.project_id, path='Ruta>Baga',
- docstring='', deprecated=False, admin_ids=[], cc_ids=[], created=None,
- creator_id=None, label_ids=[])
- config = self.services.config.GetProjectConfig(
- None, self.project.project_id)
-
- self._top_words = {
- 'foo': 0,
- 'bar': 1,
- 'baz': 2}
- self._components_by_index = {
- '0': '123',
- '1': str(component_id),
- '2': '789'}
- self._ml_engine.expected_features = [3, 0, 1, 0, 0]
- self._ml_engine.scores = [5, 10, 3]
-
- text = 'foo baz foo foo'
-
- self.assertEqual(
- component_id, component_helpers.PredictComponent(text, config))
-
- def testPredict_UnknownComponentIndex(self):
- """Test case where the prediction is not in components_by_index."""
- config = self.services.config.GetProjectConfig(
- None, self.project.project_id)
-
- self._top_words = {
- 'foo': 0,
- 'bar': 1,
- 'baz': 2}
- self._components_by_index = {
- '0': '123',
- '1': '456',
- '2': '789'}
- self._ml_engine.expected_features = [3, 0, 1, 0, 0]
- self._ml_engine.scores = [5, 10, 3, 1000]
-
- text = 'foo baz foo foo'
-
- self.assertIsNone(component_helpers.PredictComponent(text, config))
-
- def testPredict_InvalidComponentIndex(self):
- """Test case where the prediction is not a valid component id."""
- config = self.services.config.GetProjectConfig(
- None, self.project.project_id)
-
- self._top_words = {
- 'foo': 0,
- 'bar': 1,
- 'baz': 2}
- self._components_by_index = {
- '0': '123',
- '1': '456',
- '2': '789'}
- self._ml_engine.expected_features = [3, 0, 1, 0, 0]
- self._ml_engine.scores = [5, 10, 3]
-
- text = 'foo baz foo foo'
-
- self.assertIsNone(component_helpers.PredictComponent(text, config))
diff --git a/features/test/componentexport_test.py b/features/test/componentexport_test.py
deleted file mode 100644
index 0e5fbf8..0000000
--- a/features/test/componentexport_test.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Tests for the componentexport module."""
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import mock
-import unittest
-import webapp2
-
-import settings
-from features import componentexport
-from framework import urls
-
-
-class ComponentTrainingDataExportTest(unittest.TestCase):
-
- def test_handler_definition(self):
- instance = componentexport.ComponentTrainingDataExport()
- self.assertIsInstance(instance, webapp2.RequestHandler)
-
- @mock.patch('framework.cloud_tasks_helpers._get_client')
- def test_enqueues_task(self, get_client_mock):
- componentexport.ComponentTrainingDataExport().get()
-
- queue = 'componentexport'
- task = {
- 'app_engine_http_request':
- {
- 'http_method': 'GET',
- 'relative_uri': urls.COMPONENT_DATA_EXPORT_TASK
- }
- }
-
- get_client_mock().queue_path.assert_called_with(
- settings.app_id, settings.CLOUD_TASKS_REGION, queue)
- get_client_mock().create_task.assert_called_once()
- ((_parent, called_task), _kwargs) = get_client_mock().create_task.call_args
- self.assertEqual(called_task, task)
diff --git a/features/test/filterrules_helpers_test.py b/features/test/filterrules_helpers_test.py
index 99d22b7..a68c279 100644
--- a/features/test/filterrules_helpers_test.py
+++ b/features/test/filterrules_helpers_test.py
@@ -10,8 +10,8 @@
import mock
import unittest
-import urllib
-import urlparse
+from six.moves import urllib
+from six.moves.urllib.parse import parse_qs
import settings
from features import filterrules_helpers
@@ -139,7 +139,7 @@
'app_engine_http_request':
{
'relative_uri': urls.RECOMPUTE_DERIVED_FIELDS_TASK + '.do',
- 'body': urllib.urlencode(params),
+ 'body': urllib.parse.urlencode(params),
'headers':
{
'Content-type': 'application/x-www-form-urlencoded'
@@ -177,7 +177,7 @@
'relative_uri')
self.assertEqual(relative_uri, urls.RECOMPUTE_DERIVED_FIELDS_TASK + '.do')
encoded_params = called_task.get('app_engine_http_request').get('body')
- params = {k: v[0] for k, v in urlparse.parse_qs(encoded_params).items()}
+ params = {k: v[0] for k, v in parse_qs(encoded_params).items()}
self.assertEqual(params['project_id'], str(self.project.project_id))
self.assertEqual(
params['lower_bound'], str(12345 // self.BLOCK * self.BLOCK + 1))
@@ -188,7 +188,7 @@
'relative_uri')
self.assertEqual(relative_uri, urls.RECOMPUTE_DERIVED_FIELDS_TASK + '.do')
encoded_params = called_task.get('app_engine_http_request').get('body')
- params = {k: v[0] for k, v in urlparse.parse_qs(encoded_params).items()}
+ params = {k: v[0] for k, v in parse_qs(encoded_params).items()}
self.assertEqual(params['project_id'], str(self.project.project_id))
self.assertEqual(params['lower_bound'], str(1))
self.assertEqual(params['upper_bound'], str(self.BLOCK + 1))
diff --git a/features/test/inboundemail_test.py b/features/test/inboundemail_test.py
index 6c13827..0eaa281 100644
--- a/features/test/inboundemail_test.py
+++ b/features/test/inboundemail_test.py
@@ -15,6 +15,7 @@
import mox
import time
+from google.appengine.api import mail
from google.appengine.ext.webapp.mail_handlers import BounceNotificationHandler
import settings
@@ -36,7 +37,6 @@
class InboundEmailTest(unittest.TestCase):
-
def setUp(self):
self.cnxn = 'fake cnxn'
self.services = service_manager.Services(
@@ -358,28 +358,6 @@
self.mox.UnsetStubs()
self.mox.ResetAll()
- def testPost_Normal(self):
- """Normally, our post() just calls BounceNotificationHandler post()."""
- self.mox.StubOutWithMock(BounceNotificationHandler, 'post')
- BounceNotificationHandler.post()
- self.mox.ReplayAll()
-
- self.servlet.post()
- self.mox.VerifyAll()
-
- def testPost_Exception(self):
- """Our post() method works around an escaping bug."""
- self.servlet.request = webapp2.Request.blank(
- '/', POST={'raw-message': 'this is an email message'})
-
- self.mox.StubOutWithMock(BounceNotificationHandler, 'post')
- BounceNotificationHandler.post().AndRaise(AttributeError())
- BounceNotificationHandler.post()
- self.mox.ReplayAll()
-
- self.servlet.post()
- self.mox.VerifyAll()
-
def testReceive_Normal(self):
"""Find the user that bounced and set email_bounce_timestamp."""
self.assertEqual(0, self.user.email_bounce_timestamp)
diff --git a/features/test/notify_test.py b/features/test/notify_test.py
index 00de106..9ddcce7 100644
--- a/features/test/notify_test.py
+++ b/features/test/notify_test.py
@@ -26,8 +26,6 @@
from tracker import attachment_helpers
from tracker import tracker_bizobj
-from third_party import cloudstorage
-
def MakeTestIssue(project_id, local_id, owner_id, reporter_id, is_spam=False):
issue = tracker_pb2.Issue()
@@ -62,8 +60,6 @@
project_id=12345, local_id=2, owner_id=2, reporter_id=1)
self.services.issue.TestAddIssue(self.issue1)
- self._old_gcs_open = cloudstorage.open
- cloudstorage.open = fake.gcs_open
self.orig_sign_attachment_id = attachment_helpers.SignAttachmentID
attachment_helpers.SignAttachmentID = (
lambda aid: 'signed_%d' % aid)
@@ -74,7 +70,6 @@
self.testbed.init_datastore_v3_stub()
def tearDown(self):
- cloudstorage.open = self._old_gcs_open
attachment_helpers.SignAttachmentID = self.orig_sign_attachment_id
def get_filtered_task_call_args(self, create_task_mock, relative_uri):
diff --git a/features/test/send_notifications_test.py b/features/test/send_notifications_test.py
index 435a67d..b15fb23 100644
--- a/features/test/send_notifications_test.py
+++ b/features/test/send_notifications_test.py
@@ -10,7 +10,7 @@
import mock
import unittest
-import urlparse
+from six.moves.urllib.parse import parse_qs
from features import send_notifications
from framework import urls
@@ -31,9 +31,7 @@
(args, _kwargs) = call
path = args[0]['app_engine_http_request']['relative_uri']
encoded_params = args[0]['app_engine_http_request']['body']
- params = {
- k: v[0] for k, v in urlparse.parse_qs(encoded_params, True).items()
- }
+ params = {k: v[0] for k, v in parse_qs(encoded_params, True).items()}
return path, params
@mock.patch('framework.cloud_tasks_helpers.create_task')
diff --git a/features/test/spammodel_test.py b/features/test/spammodel_test.py
deleted file mode 100644
index 3e99c8f..0000000
--- a/features/test/spammodel_test.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Tests for the spammodel module."""
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import mock
-import unittest
-import webapp2
-
-from features import spammodel
-from framework import urls
-
-
-class TrainingDataExportTest(unittest.TestCase):
-
- def test_handler_definition(self):
- instance = spammodel.TrainingDataExport()
- self.assertIsInstance(instance, webapp2.RequestHandler)
-
- @mock.patch('framework.cloud_tasks_helpers._get_client')
- def test_enqueues_task(self, get_client_mock):
- spammodel.TrainingDataExport().get()
- task = {
- 'app_engine_http_request':
- {
- 'relative_uri': urls.SPAM_DATA_EXPORT_TASK + '.do',
- 'body': '',
- 'headers': {
- 'Content-type': 'application/x-www-form-urlencoded'
- }
- }
- }
- get_client_mock().create_task.assert_called_once()
- ((_parent, called_task), _kwargs) = get_client_mock().create_task.call_args
- self.assertEqual(called_task, task)
diff --git a/features/userhotlists.py b/features/userhotlists.py
index 330ab73..65e2d9d 100644
--- a/features/userhotlists.py
+++ b/features/userhotlists.py
@@ -14,6 +14,7 @@
from features import hotlist_views
from framework import framework_views
from framework import servlet
+from framework import flaskservlet
class UserHotlists(servlet.Servlet):
@@ -81,3 +82,9 @@
help_data = super(UserHotlists, self).GatherHelpData(mr, page_data)
help_data['cue'] = 'explain_hotlist_starring'
return help_data
+
+ # def GetUserHotlistsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostUserHotlistsPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/flaskregisterpages.py b/flaskregisterpages.py
index 1f0a949..af73a7f 100644
--- a/flaskregisterpages.py
+++ b/flaskregisterpages.py
@@ -5,11 +5,82 @@
"""This file sets up all the urls for monorail pages."""
import logging
-from framework import excessiveactivity
import settings
-from flask import Flask
+import flask
+
+from features import banspammer
+from features import inboundemail
+from features import hotlistcreate
+from features import savedqueries
+from features import userhotlists
+from framework import banned
+from framework import clientmon
+from framework import warmup
+from framework import reap
+from framework import deleteusers
+from framework import excessiveactivity
+from framework import ts_mon_js
+from framework import trimvisitedpages
+from project import peopledetail
+from project import peoplelist
+from project import projectadmin
+from project import projectadminadvanced
+from project import projectexport
+from project import projectsummary
+from project import projectupdates
from project import project_constants
+from project import redirects
+from services import cachemanager_svc
+from services import client_config_svc
+from sitewide import custom_404
+from sitewide import hostinghome
+from sitewide import moved
+from sitewide import userclearbouncing
+from sitewide import userupdates
+from sitewide import userprofile
+from sitewide import projectcreate
+from sitewide import usersettings
+from sitewide import groupadmin
+from sitewide import groupcreate
+from sitewide import groupdetail
+from sitewide import grouplist
+from features import rerankhotlist
+from features import hotlistdetails
+from features import hotlistissues
+from features import hotlistissuescsv
+from features import hotlistpeople
+from features import dateaction
+from features import filterrules
+from features import pubsub
+from features import notify
+from features import hotlistcreate
+from features import savedqueries
+from features import userhotlists
+from features import banspammer
+from search import backendnonviewable
+from search import backendsearch
+from tracker import componentcreate
+from tracker import fltconversion
+from tracker import fieldcreate
+from tracker import fielddetail
+from tracker import templatecreate
+from tracker import templatedetail
+from tracker import issueadmin
+from tracker import issueadvsearch
+from tracker import issueattachment
+from tracker import issueattachmenttext
+from tracker import issuebulkedit
+from tracker import issuedetailezt
+from tracker import issueentry
+from tracker import issueentryafterlogin
+from tracker import issueexport
+from tracker import issueoriginal
+from tracker import issuereindex
+from tracker import issuetips
+from tracker import issueimport
+
+from tracker import webcomponentspage
class ServletRegistry(object):
@@ -50,10 +121,796 @@
"""Register all the monorail request handlers."""
return self.routes
- def RegisterExcesiveActivity(self, service):
- flaskapp_excessive_activity = Flask(__name__)
- flaskapp_excessive_activity.add_url_rule(
- '/',
- view_func=excessiveactivity.ExcessiveActivity(services=service).handler,
- methods=['GET'])
- return flaskapp_excessive_activity
+ def _AddFlaskUrlRules(self, flask_instance, rule_tuple):
+ """Add url rules to a given Flask instance.
+
+ Args:
+ flask_instance: The Flask app to add URLs to.
+ rule_tuple: List of tuple of path, module and method to call, HTTP method
+
+ Returns:
+ The Flask instance.
+ """
+ for rule in rule_tuple:
+ flask_instance.add_url_rule(rule[0], view_func=rule[1], methods=rule[2])
+ return flask_instance
+
+ # pylint: disable=unused-argument
+ def RegisterGroupUrls(self, services):
+ flaskapp_group = flask.Flask(__name__)
+ _GROUP_URL = [
+ # ('/', grouplist.GroupList(services=services).GetGroupList, ['GET']),
+ # (
+ # '/<string:viewed_username>/',
+ # groupdetail.GroupDetail(services=services).GetGroupDetail,
+ # ['GET']),
+ # (
+ # '/<string:viewed_username>/edit.do',
+ # groupdetail.GroupDetail(services=services).PostGroupDetail,
+ # ['POST']),
+ # (
+ # '/<string:viewed_username>/groupadmin',
+ # groupadmin.GroupAdmin(services=services).GetGroupAdmin, ['GET']),
+ # (
+ # '/<string:viewed_username>/groupadmin.do',
+ # groupadmin.GroupAdmin(services=services).PostGroupAdmin,
+ # ['POST']),
+ ]
+
+ return self._AddFlaskUrlRules(flaskapp_group, _GROUP_URL)
+
+ # pylint: disable=unused-argument
+ def RegisterHostingUrl(self, service):
+ flaskapp_hosting = flask.Flask(__name__)
+ _HOSTING_URL = [
+ # (
+ # '/excessiveActivity',
+ # excessiveactivity.ExcessiveActivity(
+ # services=service).GetExcessiveActivity, ['GET']),
+ # (
+ # '/settings',
+ # usersettings.UserSettings(services=service).GetUserSetting, ['GET'
+ # ]),
+ # (
+ # '/settings.do',
+ # usersettings.UserSettings(services=service).PostUserSetting,
+ # ['POST']),
+ # ('/noAccess', banned.Banned(services=service).GetNoAccessPage,
+ # ['GET']),
+ # (
+ # '/moved', moved.ProjectMoved(services=service).GetProjectMoved,
+ # ['GET']),
+ # (
+ # '/createProject',
+ # projectcreate.ProjectCreate(services=service).GetCreateProject,
+ # ['GET']),
+ # (
+ # '/createProject.do',
+ # projectcreate.ProjectCreate(services=service).PostCreateProject,
+ # ['POST']),
+ # (
+ # '/createHotlist',
+ # hotlistcreate.HotlistCreate(services=service).GetCreateHotlist,
+ # ['GET']),
+ # (
+ # '/createHotlist.do',
+ # hotlistcreate.HotlistCreate(services=service).PostCreateHotlist,
+ # ['POST']),
+ # (
+ # '/createGroup',
+ # groupcreate.GroupCreate(services=service).GetGroupCreate,
+ # ['GET']),
+ # (
+ # '/createGroup.do',
+ # groupcreate.GroupCreate(services=service).PostGroupCreate,
+ # ['POST']),
+ # (
+ # '/deleteGroup',
+ # grouplist.GroupDelete(services=service).GetGroupDelete,
+ # ['GET']),
+ # (
+ # '/deleteGroup.do',
+ # grouplist.GroupDelete(services=service).PostGroupDelete,
+ # ['POST']),
+ ]
+
+ flaskapp_hosting = self._AddFlaskUrlRules(flaskapp_hosting, _HOSTING_URL)
+
+ # pylint: disable=unused-variable
+ # for url /hosting/
+ @flaskapp_hosting.route('/')
+ def DefaultToMainPage():
+ url = flask.request.host_url
+ return flask.redirect(url)
+
+ return flaskapp_hosting
+
+ def RegisterOldHostUrl(self, service):
+ flaskapp_hosting_old = flask.Flask(__name__)
+
+ # pylint: disable=unused-variable
+ @flaskapp_hosting_old.route('/')
+ def GetHostingOld():
+ return hostinghome.HostingHome(services=service).GetOldHostingHome()
+
+ return flaskapp_hosting_old
+
+ def RegisterRedirectProjectUrl(self):
+ flaskapp_project_redirect = flask.Flask(__name__)
+
+ # pylint: disable=unused-variable
+ @flaskapp_project_redirect.route('/')
+ def GetRedirectProject():
+ url = flask.request.host_url
+ return flask.redirect(url)
+
+ return flaskapp_project_redirect
+
+ def RegisterProjectUrls(self, service):
+ flaskapp_project = flask.Flask(__name__)
+ _PROJECT_URLS = [
+ # (
+ # '/<string:project_name>/<string:unrecognized>',
+ # custom_404.ErrorPage(services=service).Get404Page,
+ # ['GET'],
+ # ),
+ # (
+ # '/<string:project_name>/adminComponents',
+ # issueadmin.AdminComponents(
+ # services=service).GetAdminComponentsPage, ['GET']),
+ # (
+ # '/<string:project_name>/adminComponents.do',
+ # issueadmin.AdminComponents(
+ # services=service).PostAdminComponentsPage, ['POST']),
+ # (
+ # '/<string:project_name>/adminIntro',
+ # projectsummary.ProjectSummary(
+ # services=service).GetProjectSummaryPage, ['GET']),
+ # (
+ # '/<string:project_name>/adminLabels',
+ # issueadmin.AdminLabels(services=service).GetAdminLabelsPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/adminLabels.do',
+ # issueadmin.AdminLabels(services=service).PostAdminLabelsPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/adminRules',
+ # issueadmin.AdminRules(services=service).GetAdminRulesPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/adminRules.do',
+ # issueadmin.AdminRules(services=service).PostAdminRulesPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/adminStatuses',
+ # issueadmin.AdminStatuses(services=service).GetAdminStatusesPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/adminStatuses.do',
+ # issueadmin.AdminStatuses(services=service).PostAdminStatusesPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/adminTemplates',
+ # issueadmin.AdminTemplates(services=service).GetAdminTemplatesPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/adminTemplates.do',
+ # issueadmin.AdminTemplates(
+ # services=service).PostAdminTemplatesPage, ['POST']),
+ # (
+ # '/<string:project_name>/adminViews',
+ # issueadmin.AdminViews(services=service).GetAdminViewsPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/adminViews.do',
+ # issueadmin.AdminViews(services=service).PostAdminViewsPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/admin',
+ # projectadmin.ProjectAdmin(services=service).GetProjectAdminPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/admin.do',
+ # projectadmin.ProjectAdmin(services=service).PostProjectAdminPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/adminAdvanced',
+ # projectadminadvanced.ProjectAdminAdvanced(
+ # services=service).GetProjectAdminAdvancedPage, ['GET']),
+ # (
+ # '/<string:project_name>/adminAdvanced.do',
+ # projectadminadvanced.ProjectAdminAdvanced(
+ # services=service).PostProjectAdminAdvancedPage, ['POST']),
+ # (
+ # '/<string:project_name>/components/create',
+ # componentcreate.ComponentCreate(
+ # services=service).GetComponentCreatePage, ['GET']),
+ # (
+ # '/<string:project_name>/components/create.do',
+ # componentcreate.ComponentCreate(
+ # services=service).PostComponentCreatePage, ['POST']),
+ # (
+ # '/<string:project_name>/fields/create',
+ # fieldcreate.FieldCreate(
+ # services=service).GetFieldCreate, ['GET']),
+ # (
+ # '/<string:project_name>/fields/create.do',
+ # fieldcreate.FieldCreate(
+ # services=service).PostFieldCreate, ['POST']),
+ # (
+ # '/<string:project_name>/fields/detail',
+ # fielddetail.FieldDetail(
+ # services=service).GetFieldDetail, ['GET']),
+ # (
+ # '/<string:project_name>/fields/detail.do',
+ # fielddetail.FieldDetail(
+ # services=service).PostFieldDetail, ['POST']),
+ # (
+ # '/<string:project_name>/issues/advsearch',
+ # issueadvsearch.IssueAdvancedSearch(
+ # services=service).GetIssueAdvSearchPage, ['GET']),
+ # (
+ # '/<string:project_name>/issues/advsearch.do',
+ # issueadvsearch.IssueAdvancedSearch(
+ # services=service).PostIssueAdvSearchPage, ['POST']),
+ # (
+ # '/<string:project_name>/issues/detail',
+ # webcomponentspage.WebComponentsPage(
+ # services=service).GetWebComponentsIssueDetail, ['GET']),
+ # (
+ # '/<string:project_name>/issues/export',
+ # issueexport.IssueExport(services=service).GetIssueExport,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/issues/export/json',
+ # issueexport.IssueExportJSON(services=service).GetIssueExportJSON,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/issues/export/json.do',
+ # issueexport.IssueExportJSON(services=service).PostIssueExportJSON,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/issues/import',
+ # issueimport.IssueImport(services=service).GetIssueImport,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/issues/import.do',
+ # issueimport.IssueImport(services=service).PostIssueImport, ['POST'
+ # ]),
+ # (
+ # '/<string:project_name>/issues/original',
+ # issueoriginal.IssueOriginal(services=service).GetIssueOriginal,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/issues/entry',
+ # issueentry.IssueEntry(
+ # services=service).GetIssueEntry, ['GET']),
+ # (
+ # '/<string:project_name>/issues/entry.do',
+ # issueentry.IssueEntry(
+ # services=service).PostIssueEntry, ['POST']),
+ # (
+ # '/<string:project_name>/issues/entry_new',
+ # webcomponentspage.WebComponentsPage(
+ # services=service).GetWebComponentsIssueNewEntry, ['GET']),
+ # (
+ # '/<string:project_name>/issues/list',
+ # webcomponentspage.WebComponentsPage(
+ # services=service).GetWebComponentsIssueList, ['GET']),
+ # (
+ # '/<string:project_name>/issues/reindex',
+ # issuereindex.IssueReindex(
+ # services=service).GetIssueReindex, ['GET']),
+ # (
+ # '/<string:project_name>/issues/reindex.do',
+ # issuereindex.IssueReindex(
+ # services=service).PostIssueReindex, ['POST']),
+ # (
+ # '/<string:project_name>/issues/detail/list',
+ # issuedetailezt.FlipperList(
+ # services=service).GetFlipperList, ['GET']),
+ # (
+ # '/<string:project_name>/issues/detail/flipper',
+ # issuedetailezt.FlipperIndex(
+ # services=service).GetFlipperIndex, ['GET']),
+ # (
+ # '/<string:project_name>/issues/detail/flipper.do',
+ # issuedetailezt.FlipperIndex(
+ # services=service).PostFlipperIndex, ['POST']),
+ # (
+ # '/<string:project_name>/issues/wizard',
+ # webcomponentspage.WebComponentsPage(
+ # services=service).GetWebComponentsIssueWizard, ['GET']),
+ # (
+ # '/<string:project_name>/templates/create',
+ # templatecreate.TemplateCreate(
+ # services=service).GetTemplateCreate, ['GET']),
+ # (
+ # '/<string:project_name>/templates/create.do',
+ # templatecreate.TemplateCreate(
+ # services=service).PostTemplateCreate, ['POST']),
+ # (
+ # '/<string:project_name>/templates/detail',
+ # templatedetail.TemplateDetail(
+ # services=service).GetTemplateDetail, ['GET']),
+ # (
+ # '/<string:project_name>/templates/detail.do',
+ # templatedetail.TemplateDetail(
+ # services=service).PostTemplateDetail, ['POST']),
+ # (
+ # '/<string:project_name>/people/list',
+ # peoplelist.PeopleList(services=service).GetPeopleListPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/people/list.do',
+ # peoplelist.PeopleList(services=service).PostPeopleListPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/people/detail',
+ # peopledetail.PeopleDetail(services=service).GetPeopleDetailPage,
+ # ['GET']),
+ # (
+ # '/<string:project_name>/people/detail.do',
+ # peopledetail.PeopleDetail(services=service).PostPeopleDetailPage,
+ # ['POST']),
+ # (
+ # '/<string:project_name>/projectExport',
+ # projectexport.ProjectExport(
+ # services=service).GetProjectExportPage, ['GET']),
+ # (
+ # '/<string:project_name>/projectExport/json',
+ # projectexport.ProjectExportJSON(
+ # services=service).GetProjectExportJSONPage, ['GET']),
+ # (
+ # '/<string:project_name>/projectExport/json.do',
+ # projectexport.ProjectExportJSON(
+ # services=service).PostProjectExportJSONPage, ['POST']),
+ # (
+ # '/<string:project_name>/updates/list',
+ # projectupdates.ProjectUpdates(
+ # services=service).GetProjectUpdatesPage, ['GET']),
+ # (
+ # '/<string:project_name>/w/list',
+ # redirects.WikiRedirect(
+ # services=service).GetWikiListRedirect, ['GET']),
+ # (
+ # '/<string:project_name>/wiki/<string:wiki_page>',
+ # redirects.WikiRedirect(
+ # services=service).GetWikiRedirect, ['GET']),
+ # (
+ # '/<string:project_name>/source/<string:source_page>',
+ # redirects.SourceRedirect(
+ # services=service).GetSourceRedirect, ['GET']),
+ # '/<string:project_name>/issues/entryafterlogin',
+ # issueentryafterlogin.IssueEntryAfterLogin(
+ # services=service).GetIssueEntryAfterLogin,
+ # ['GET'],
+ # ),
+ # (
+ # '/<string:project_name>/issues/searchtips',
+ # issuetips.IssueSearchTips(services=service).GetIssueSearchTips,
+ # ['GET'],
+ # ),
+ # (
+ # '/<string:project_name>/issues/attachment',
+ # issueattachment.AttachmentPage(services=service).GetAttachmentPage,
+ # ['GET'],
+ # ),
+ # (
+ # '/<string:project_name>/issues/attachmentText',
+ # issueattachmenttext.AttachmentText(
+ # services=service).GetAttachmentText,
+ # ['GET'],
+ # ),
+ # (
+ # '/<string:project_name>/issues/bulkedit',
+ # issuebulkedit.IssueBulkEdit(
+ # services=service).GetIssueBulkEdit, ['GET']),
+ # (
+ # '/<string:project_name>/issues/bulkedit.do',
+ # issuebulkedit.IssueBulkEdit(
+ # services=service).PostIssueBulkEdit, ['POST']),
+ # (
+ # '/<string:project_name>/issues/detail/next',
+ # issuedetailezt.FlipperNext(
+ # services=service).GetFlipperNextRedirectPage, ['GET']),
+ # (
+ # '/<string:project_name>/issues/detail/previous',
+ # issuedetailezt.FlipperPrev(
+ # services=service).GetFlipperPrevRedirectPage, ['GET']),
+ ]
+ flaskapp_project = self._AddFlaskUrlRules(flaskapp_project, _PROJECT_URLS)
+
+ # pylint: disable=unused-variable
+ @flaskapp_project.route('/<string:project_name>/issues/approval')
+ @flaskapp_project.route('/<string:project_name>/issues/detail_ezt')
+ def ProjectRedirectToIssueDetail(project_name):
+ host_url = flask.request.host_url
+ url = host_url + 'p/' + project_name + '/issues/detail'
+ query_string = flask.request.query_string
+ if query_string:
+ url = '%s?%s' % (url, query_string)
+ return flask.redirect(url)
+
+ # pylint: disable=unused-variable
+ @flaskapp_project.route('/<string:project_name>/issues/list_new')
+ @flaskapp_project.route('/<string:project_name>/')
+ @flaskapp_project.route('/<string:project_name>/issues/')
+ def ProjectRedirectToIssueList(project_name):
+ host_url = flask.request.host_url
+ url = host_url + 'p/' + project_name + '/issues/list'
+ query_string = flask.request.query_string
+ if query_string:
+ url = '%s?%s' % (url, query_string)
+ return flask.redirect(url)
+
+ # pylint: disable=unused-variable
+ @flaskapp_project.route('/')
+ def ProjectRedirectToMainPage():
+ url = flask.request.host_url
+ return flask.redirect(url)
+
+ # pylint: disable=unused-variable
+ @flaskapp_project.route('/<string:project_name>/people/')
+ def ProjectRedirectToPeopleList(project_name):
+ host_url = flask.request.host_url
+ url = host_url + 'p/' + project_name + '/people/list'
+ return flask.redirect(url)
+
+ return flaskapp_project
+
+ def RegisterUserUrls(self, service):
+ flaskapp_user = flask.Flask(__name__)
+ _USER_URLS = [
+ # (
+ # '/<string:viewed_username>/queries',
+ # savedqueries.SavedQueries(services=service).GetSavedQueriesPage,
+ # ['GET']),
+ # (
+ # '/<string:viewed_username>/queries.do',
+ # savedqueries.SavedQueries(services=service).PostSavedQueriesPage,
+ # ['Post']),
+ # (
+ # '/<string:viewed_username>/hotlists',
+ # userhotlists.UserHotlists(services=service).GetUserHotlistsPage,
+ # ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists.do',
+ # userhotlists.UserHotlists(services=service).PostUserHotlistsPage,
+ # ['Post']),
+ # (
+ # '/<string:viewed_username>/',
+ # userprofile.UserProfile(services=service).GetUserProfilePage,
+ # ['GET']),
+ # (
+ # '/<string:viewed_username>/edit.do',
+ # userprofile.UserProfile(services=service).PostUserProfilePage,
+ # ['POST']),
+ # (
+ # '/<string:viewed_username>/ban.do',
+ # userprofile.BanUser(services=service).PostBanUserPage,
+ # ['POST']),
+ # (
+ # '/<string:viewed_username>/banSpammer.do',
+ # banspammer.BanSpammer(services=service).PostBanSpammerPage,
+ # ['POST']),
+ # (
+ # '/<string:viewed_username>/clearBouncing',
+ # userclearbouncing.UserClearBouncing(
+ # services=service).GetUserClearBouncingPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/clearBouncing.do',
+ # userclearbouncing.UserClearBouncing(
+ # services=service).PostUserClearBouncingPage, ['Post']),
+ # (
+ # '/<string:viewed_username>/updates/projects',
+ # userupdates.UserUpdatesProjects(
+ # services=service).GetUserUpdatesProjectsPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/updates/developers',
+ # userupdates.UserUpdatesDevelopers(
+ # services=service).GetUserUpdatesDevelopersPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/updates',
+ # userupdates.UserUpdatesIndividual(
+ # services=service).GetUserUpdatesPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>',
+ # hotlistissues.HotlistIssues(services=service).GetHotlistIssuesPage,
+ # ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>.do',
+ # hotlistissues.HotlistIssues(services=service).PostHotlistIssuesPage,
+ # ['POST']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/csv',
+ # hotlistissuescsv.HotlistIssuesCsv(
+ # services=service).GetHotlistIssuesCsvPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/people',
+ # hotlistpeople.HotlistPeopleList(
+ # services=service).GetHotlistPeoplePage, ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/people.do',
+ # hotlistpeople.HotlistPeopleList(
+ # services=service).PostHotlistPeoplePage, ['POST']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/details',
+ # hotlistdetails.HotlistDetails(
+ # services=service).GetHotlistDetailsPage, ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/details.do',
+ # hotlistdetails.HotlistDetails(
+ # services=service).PostHotlistDetailsPage, ['POST']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/rerank',
+ # rerankhotlist.RerankHotlistIssue(
+ # services=service).GetRerankHotlistIssuePage, ['GET']),
+ # (
+ # '/<string:viewed_username>/hotlists/<string:hotlist_id>/rerank.do',
+ # rerankhotlist.RerankHotlistIssue(
+ # services=service).PostRerankHotlistIssuePage, ['POST']),
+ ]
+
+ flaskapp_user = self._AddFlaskUrlRules(flaskapp_user, _USER_URLS)
+
+ # pylint: disable=unused-variable
+ # for url /u/
+ @flaskapp_user.route('/')
+ def UserRedirectToMainPage():
+ url = flask.request.host_url
+ return flask.redirect(url)
+
+ return flaskapp_user
+
+ # pylint: disable=unused-argument
+ def RegisterTaskUrl(self, service):
+ flaskapp_task = flask.Flask(__name__)
+ _TASK_URL = [
+ # (
+ # '/banSpammer',
+ # banspammer.BanSpammerTask(services=service).GetBanSpammer,
+ # ['GET']),
+ # (
+ # '/banSpammer.do',
+ # banspammer.BanSpammerTask(services=service).PostBanSpammer,
+ # ['POST']),
+ # (
+ # '/sendWipeoutUserListsTask',
+ # deleteusers.SendWipeoutUserListsTask(
+ # services=service).GetSendWipeoutUserListsTask, ['GET']),
+ # (
+ # '/sendWipeoutUserListsTask.do',
+ # deleteusers.SendWipeoutUserListsTask(
+ # services=service).PostSendWipeoutUserListsTask, ['POST']),
+ # (
+ # '/deleteWipeoutUsersTask',
+ # deleteusers.DeleteWipeoutUsersTask(
+ # services=service).GetDeleteWipeoutUsersTask, ['GET']),
+ # (
+ # '/deleteWipeoutUsersTask.do',
+ # deleteusers.DeleteWipeoutUsersTask(
+ # services=service).PostDeleteWipeoutUsersTask, ['POST']),
+ # (
+ # '/deleteUsersTask',
+ # deleteusers.DeleteUsersTask(services=service).GetDeleteUsersTask,
+ # ['GET']),
+ # (
+ # '/deleteUsersTask.do',
+ # deleteusers.DeleteUsersTask(services=service).PostDeleteUsersTask,
+ # ['POST']),
+ # (
+ # '/notifyRulesDeleted',
+ # notify.NotifyRulesDeletedTask(
+ # services=service).GetNotifyRulesDeletedTask, ['GET']),
+ # (
+ # '/notifyRulesDeleted.do',
+ # notify.NotifyRulesDeletedTask(
+ # services=service).PostNotifyRulesDeletedTask, ['POST']),
+ # (
+ # '/notifyIssueChange', notify.NotifyIssueChangeTask(
+ # services=service).GetNotifyIssueChangeTask, ['GET']),
+ # (
+ # '/notifyIssueChange.do',
+ # notify.NotifyIssueChangeTask(
+ # services=service).PostNotifyIssueChangeTask, ['POST']),
+ # (
+ # '/notifyBlockingChange',
+ # notify.NotifyBlockingChangeTask(
+ # services=service).GetNotifyBlockingChangeTask, ['GET']),
+ # (
+ # '/notifyBlockingChange.do',
+ # notify.NotifyBlockingChangeTask(
+ # services=service).PostNotifyBlockingChangeTask, ['POST']),
+ # (
+ # '/notifyBulkEdit', notify.NotifyBulkChangeTask(
+ # services=service).GetNotifyBulkChangeTask, ['GET']),
+ # (
+ # '/notifyBulkEdit.do', notify.NotifyBulkChangeTask(
+ # services=service).PostNotifyBulkChangeTask, ['POST']),
+ # (
+ # '/notifyApprovalChange',
+ # notify.NotifyApprovalChangeTask(
+ # services=service).GetNotifyApprovalChangeTask, ['GET']),
+ # (
+ # '/notifyApprovalChange.do',
+ # notify.NotifyApprovalChangeTask(
+ # services=service).PostNotifyApprovalChangeTask, ['POST']),
+ # (
+ # '/publishPubsubIssueChange',
+ # pubsub.PublishPubsubIssueChangeTask(
+ # services=service).GetPublishPubsubIssueChangeTask, ['GET']),
+ # (
+ # '/publishPubsubIssueChange.do',
+ # pubsub.PublishPubsubIssueChangeTask(
+ # services=service).PostPublishPubsubIssueChangeTask, ['POST']),
+ # (
+ # '/issueDateAction', dateaction.IssueDateActionTask(
+ # services=service).GetIssueDateActionTask, ['GET']),
+ # (
+ # '/issueDateAction.do',
+ # dateaction.IssueDateActionTask(
+ # services=service).PostIssueDateActionTask, ['POST']),
+ # (
+ # '/fltConversionTask',
+ # fltconversion.FLTConvertTask(services=service).GetFLTConvertTask,
+ # ['GET']),
+ # (
+ # '/fltConversionTask.do',
+ # fltconversion.FLTConvertTask(services=service).PostFLTConvertTask,
+ # ['POST']),
+ # (
+ # '/outboundEmail',
+ # notify.OutboundEmailTask(services=service).GetOutboundEmailTask,
+ # ['GET']),
+ # (
+ # '/outboundEmail.do',
+ # notify.OutboundEmailTask(services=service).PostOutboundEmailTask,
+ # ['POST']),
+ # (
+ # '/recomputeDerivedFields',
+ # filterrules.RecomputeDerivedFieldsTask(
+ # services=service).GetRecomputeDerivedFieldsTask, ['GET']),
+ # (
+ # '/recomputeDerivedFields.do',
+ # filterrules.RecomputeDerivedFieldsTask(
+ # services=service).PostRecomputeDerivedFieldsTask, ['POST']),
+ ]
+
+ for rule in _TASK_URL:
+ flaskapp_task.add_url_rule(rule[0], view_func=rule[1], methods=rule[2])
+
+ return flaskapp_task
+
+ # pylint: disable=unused-argument
+ def RegisterCronUrl(self, service):
+ flaskapp_cron = flask.Flask(__name__)
+ _CRON_URL = [
+ # (
+ # '/wipeoutSync',
+ # deleteusers.WipeoutSyncCron(services=service).GetWipeoutSyncCron,
+ # ['GET']),
+ # (
+ # '/wipeoutSync.do',
+ # deleteusers.WipeoutSyncCron(services=service).PostWipeoutSyncCron,
+ # ['POST']),
+ # (
+ # '/reindexQueue',
+ # filterrules.ReindexQueueCron(
+ # services=service).GetReindexQueueCron,
+ # ['GET']),
+ # (
+ # '/reindexQueue.do',
+ # filterrules.ReindexQueueCron(
+ # services=service).PostReindexQueueCron,
+ # ['POST']),
+ # (
+ # '/dateAction',
+ # dateaction.DateActionCron(services=service).GetDateActionCron,
+ # ['GET']),
+ # (
+ # '/dateAction.do',
+ # dateaction.DateActionCron(services=service).PostDateActionCron,
+ # ['POST']),
+ # (
+ # '/ramCacheConsolidate',
+ # cachemanager_svc.RamCacheConsolidate(
+ # services=service).GetRamCacheConsolidate, ['GET']),
+ # (
+ # '/ramCacheConsolidate.do',
+ # cachemanager_svc.RamCacheConsolidate(
+ # services=service).PostRamCacheConsolidate, ['POST']),
+ # ('/reap', reap.Reap(services=service).GetReap, ['GET']),
+ # ('/reap.do', reap.Reap(services=service).PostReap, ['POST']),
+ # (
+ # '/loadApiClientConfigs',
+ # client_config_svc.LoadApiClientConfigs().GetLoadApiClientConfigs,
+ # ['GET']),
+ # (
+ # '/trimVisitedPages',
+ # trimvisitedpages.TrimVisitedPages(
+ # services=service).GetTrimVisitedPages, ['GET']),
+ # (
+ # '/trimVisitedPages.do',
+ # trimvisitedpages.TrimVisitedPages(
+ # services=service).PostTrimVisitedPages, ['POST']),
+ ]
+
+ for rule in _CRON_URL:
+ flaskapp_cron.add_url_rule(rule[0], view_func=rule[1], methods=rule[2])
+
+ return flaskapp_cron
+
+ # pylint: disable=unused-argument
+ def RegisterBackendUrl(self, service):
+ flaskapp_backend = flask.Flask(__name__)
+ _BACKEND_URL = [
+ # (
+ # '/search',
+ # backendsearch.BackendSearch(services=service).GetBackendSearch,
+ # ['GET']),
+ # (
+ # '/search.do',
+ # backendsearch.BackendSearch(services=service).PostBackendSearch,
+ # ['POST']),
+ # (
+ # '/nonviewable',
+ # backendnonviewable.BackendNonviewable(
+ # services=service).GetBackendNonviewable,
+ # ['GET']),
+ # (
+ # '/nonviewable.do',
+ # backendnonviewable.BackendNonviewable(
+ # services=service).PostBackendNonviewable,
+ # ['POST']),
+ ]
+
+ for rule in _BACKEND_URL:
+ flaskapp_backend.add_url_rule(rule[0], view_func=rule[1], methods=rule[2])
+
+ return flaskapp_backend
+
+ # pylint: disable=unused-argument
+ def RegisterMONSetUrl(self, service):
+ flaskapp_mon = flask.Flask(__name__)
+ _MON_URL = [
+ # (
+ # '/clientmon',
+ # clientmon.ClientMonitor(services=service).GetClientMonitor, ['GET'
+ # ]),
+ # (
+ # '/clientmon.do',
+ # clientmon.ClientMonitor(services=service).PostClientMonitor,
+ # ['POST']),
+ # (
+ # '/jstsmon.do',
+ # ts_mon_js.FlaskMonorailTSMonJSHandler(
+ # services=service).PostMonorailTSMonJSHandler,
+ # ['POST'],
+ # )
+ ]
+
+ flaskapp_mon = self._AddFlaskUrlRules(flaskapp_mon, _MON_URL)
+ return flaskapp_mon
+
+ # pylint: disable=unused-argument
+ def RegisterAHUrl(self, service):
+ flaskapp_ah = flask.Flask(__name__)
+ _AH_URL = [
+ # ('/warmup', warmup.Warmup(services=service).GetWarmup, ['GET']),
+ # ('/start', warmup.Start(services=service).GetStart, ['GET']),
+ # ('/stop', warmup.Stop(services=service).GetStop, ['GET']),
+ # (
+ # '/bounce',
+ # inboundemail.BouncedEmail(services=service).postBouncedEmail,
+ # ['POST']),
+ # (
+ # '/mail/<string:project_addr>',
+ # inboundemail.InboundEmail(services=service).HandleInboundEmail,
+ # ['GET', 'POST'])
+ ]
+
+ flaskapp_ah = self._AddFlaskUrlRules(flaskapp_ah, _AH_URL)
+
+ return flaskapp_ah
diff --git a/framework/banned.py b/framework/banned.py
index cb0e220..231f76f 100644
--- a/framework/banned.py
+++ b/framework/banned.py
@@ -18,7 +18,7 @@
import ezt
-from framework import permissions
+from framework import flaskservlet, permissions
from framework import servlet
@@ -52,3 +52,6 @@
# user back to this page after they sign out.
'currentPageURLEncoded': None,
}
+
+ # def GetNoAccessPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/framework/clientmon.py b/framework/clientmon.py
index cc4917c..f512f4d 100644
--- a/framework/clientmon.py
+++ b/framework/clientmon.py
@@ -18,6 +18,8 @@
from infra_libs import ts_mon
+
+# TODO: convert to FlaskJsonFeed while convert to Flask
class ClientMonitor(jsonfeed.JsonFeed):
"""JSON feed to track client side js errors in ts_mon."""
@@ -35,6 +37,8 @@
Dict of values used by EZT for rendering the page.
"""
+ # TODO: uncomment while convert to flask
+ # post_data = mr.request.values
post_data = mr.request.POST
errors = post_data.get('errors')
try:
@@ -50,3 +54,9 @@
logging.error('Problem processing client monitor report: %r', e)
return {}
+
+ # def GetClientMonitor(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostClientMonitor(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/framework/cloud_tasks_helpers.py b/framework/cloud_tasks_helpers.py
index a00fa0d..bd9b7f9 100644
--- a/framework/cloud_tasks_helpers.py
+++ b/framework/cloud_tasks_helpers.py
@@ -12,7 +12,7 @@
from __future__ import print_function
import logging
-import urllib
+from six.moves import urllib
from google.api_core import exceptions
from google.api_core import retry
@@ -91,7 +91,7 @@
'app_engine_http_request':
{
'relative_uri': url,
- 'body': urllib.urlencode(params),
+ 'body': urllib.parse.urlencode(params),
'headers': {
'Content-type': 'application/x-www-form-urlencoded'
}
diff --git a/framework/deleteusers.py b/framework/deleteusers.py
index 0c23ac5..739782e 100644
--- a/framework/deleteusers.py
+++ b/framework/deleteusers.py
@@ -32,6 +32,7 @@
return credentials.authorize(httplib2.Http(timeout=60))
+# TODO: change to FlaskInternalTask when convert to Flask
class WipeoutSyncCron(jsonfeed.InternalTask):
"""Enqueue tasks for sending user lists to wipeout-lite and deleting deleted
users fetched from wipeout-lite."""
@@ -61,7 +62,14 @@
cloud_tasks_helpers.create_task(
task, queue=framework_constants.QUEUE_FETCH_WIPEOUT_DELETED_USERS)
+ # def GetWipeoutSyncCron(self, **kwargs):
+ # return self.handler(**kwargs)
+ # def PostWipeoutSyncCron(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO: Set to FlaskInternalTask when convert
class SendWipeoutUserListsTask(jsonfeed.InternalTask):
"""Sends a batch of monorail users to wipeout-lite."""
@@ -87,7 +95,14 @@
logging.info(
'Received response, %s with contents, %s', resp, data)
+ # def GetSendWipeoutUserListsTask(self, **kwargs):
+ # return self.handler(**kwargs)
+ # def PostSendWipeoutUserListsTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO: Set to FlaskInternalTask when convert
class DeleteWipeoutUsersTask(jsonfeed.InternalTask):
"""Fetches deleted users from wipeout-lite and enqueues tasks to delete
those users from Monorail's DB."""
@@ -122,7 +137,14 @@
'Received response, %s with contents, %s', resp, data)
return json.loads(data)
+ # def GetDeleteWipeoutUsersTask(self, **kwargs):
+ # return self.handler(**kwargs)
+ # def PostDeleteWipeoutUsersTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO: Set to FlaskInternalTask when convert
class DeleteUsersTask(jsonfeed.InternalTask):
"""Deletes users from Monorail's DB."""
@@ -137,3 +159,9 @@
return
with work_env.WorkEnv(mr, self.services) as we:
we.ExpungeUsers(emails, check_perms=False)
+
+ # def GetDeleteUsersTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostDeleteUsersTask(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/framework/excessiveactivity.py b/framework/excessiveactivity.py
index c9933db..0e54ebd 100644
--- a/framework/excessiveactivity.py
+++ b/framework/excessiveactivity.py
@@ -12,14 +12,19 @@
from __future__ import division
from __future__ import absolute_import
-from framework import flaskservlet
+from framework import servlet
-class ExcessiveActivity(flaskservlet.FlaskServlet):
+class ExcessiveActivity(servlet.Servlet):
"""ExcessiveActivity page shows an error message."""
_PAGE_TEMPLATE = 'framework/excessive-activity-page.ezt'
+ # pylint: disable=unused-argument
+ def GetExcessiveActivity(self, **kwargs):
+ return
+ # return self.handler(**kwargs)
+
def GatherPageData(self, _mr):
"""Build up a dictionary of data values to use when rendering the page."""
return {}
diff --git a/framework/flaskservlet.py b/framework/flaskservlet.py
index 9599884..fce3eab 100644
--- a/framework/flaskservlet.py
+++ b/framework/flaskservlet.py
@@ -25,6 +25,7 @@
import ezt
from features import features_bizobj, hotlist_views
import flask
+import httpagentparser
from project import project_constants
from proto import project_pb2
from search import query2ast
@@ -38,7 +39,6 @@
from framework import ratelimiter
from framework import template_helpers
from framework import xsrf
-from third_party import httpagentparser
from google.appengine.api import app_identity
from google.appengine.api import modules
@@ -61,6 +61,7 @@
_MAIN_TAB_MODE = None # Normally overridden in subclasses to be one of these:
MAIN_TAB_ISSUES = 't2'
+ MAIN_TAB_PEOPLE = 't3'
IN_TAB_PEOPLE = 't3'
MAIN_TAB_PROCESS = 't4'
MAIN_TAB_UPDATES = 't5'
@@ -111,10 +112,13 @@
self.content_type = content_type
self.mr = None
self.request = flask.request
+ self.request_path = None
self.response = None
self.ratelimiter = ratelimiter.RateLimiter()
+ self.redirect_url = None
- def handler(self):
+ # pylint: disable=unused-argument
+ def handler(self, **kwargs):
"""Do common stuff then dispatch the request to get() or put() methods."""
self.response = flask.make_response()
handler_start_time = time.time()
@@ -128,6 +132,7 @@
# GC_COUNT.add(count2, {'generation': 2})
self.mr = monorailrequest.MonorailRequest(self.services)
+ self.request_path = self.request.base_url[len(self.request.host_url) - 1:]
self.response.headers.add(
'Strict-Transport-Security', 'max-age=31536000; includeSubDomains')
@@ -163,6 +168,8 @@
if self.request.method == 'POST':
self.post()
+ if self.redirect_url:
+ return self.redirect(self.redirect_url)
elif self.request.method == 'GET':
self.get()
except exceptions.NoSuchUserException as e:
@@ -194,7 +201,7 @@
except ratelimiter.RateLimitExceeded as e:
logging.info('RateLimitExceeded Exception %s', e)
self.response.status_code = httplib.BAD_REQUEST
- self.response.response = 'Slow your roll.'
+ self.response.set_data('Slow your roll.')
finally:
self.mr.CleanUp()
@@ -380,7 +387,7 @@
if self.CHECK_SECURITY_TOKEN:
try:
xsrf.ValidateToken(
- request.values.get('token'), mr.auth.user_id, request.path)
+ request.values.get('token'), mr.auth.user_id, self.request_path)
except xsrf.TokenIncorrect as err:
if self.ALLOW_XHR:
xsrf.ValidateToken(
@@ -388,14 +395,14 @@
else:
raise err
- redirect_url = self.ProcessFormData(mr, request.values)
+ self.redirect_url = self.ProcessFormData(mr, request.values)
# Most forms redirect the user to a new URL on success. If no
# redirect_url was returned, the form handler must have already
# sent a response. E.g., bounced the user back to the form with
# invalid form fields highlighted.
- if redirect_url:
- self.redirect(redirect_url, abort=True)
+ if self.redirect_url:
+ return self.redirect(self.redirect_url, abort=True)
else:
assert self.response.response
@@ -676,8 +683,7 @@
mr.auth.user_id, xsrf.XHR_SERVLET_PATH)
# Always add other anti-xsrf tokens when the user is logged in.
if mr.auth.user_id:
- form_token_path = self._FormHandlerURL(mr.request.path)
- form_token_path = '/'
+ form_token_path = self._FormHandlerURL(mr.request_path)
base_data['form_token'] = xsrf.GenerateToken(
mr.auth.user_id, form_token_path)
base_data['form_token_path'] = form_token_path
@@ -753,7 +759,7 @@
if not mr.project.moved_to:
return # This project has not moved.
admin_url = '/p/%s%s' % (mr.project_name, urls.ADMIN_META)
- if request.path.startswith(admin_url):
+ if self.request_path.startswith(admin_url):
return # It moved, but we are near the page that can un-move it.
logging.info(
@@ -852,10 +858,9 @@
def redirect(self, url, abort=False):
if abort:
- flask.redirect(url, code=302)
- flask.abort(302)
+ return flask.redirect(url, code=302)
else:
- flask.redirect(url)
+ return flask.redirect(url)
def PleaseCorrect(self, mr, **echo_data):
"""Show the same form again so that the user can correct their input."""
@@ -871,3 +876,6 @@
now - framework_constants.VISIT_RESOLUTION):
user_pb.last_visit_timestamp = now
self.services.user.UpdateUser(mr.cnxn, user_pb.user_id, user_pb)
+
+ def abort(self, code, context):
+ return flask.abort(code, context)
diff --git a/framework/framework_helpers.py b/framework/framework_helpers.py
index b7199b1..47c34ef 100644
--- a/framework/framework_helpers.py
+++ b/framework/framework_helpers.py
@@ -17,8 +17,7 @@
import threading
import time
import traceback
-import urllib
-import urlparse
+from six.moves.urllib.parse import urlparse, quote, urlunparse
from google.appengine.api import app_identity
@@ -237,12 +236,12 @@
The url transposed into the given destination project.
"""
project_name = moved_to
- _, _, path, parameters, query, fragment_identifier = urlparse.urlparse(
+ _, _, path, parameters, query, fragment_identifier = urlparse(
mr.current_page_url)
# Strip off leading "/p/<moved from project>"
path = '/' + path.split('/', 3)[3]
- rest_of_url = urlparse.urlunparse(
- ('', '', path, parameters, query, fragment_identifier))
+ rest_of_url = urlunparse(
+ ('', '', path, parameters, query, fragment_identifier))
return '/p/%s%s' % (project_name, rest_of_url)
@@ -302,8 +301,9 @@
A URL with the specified query parameters.
"""
param_string = '&'.join(
- '%s=%s' % (name, urllib.quote(six.text_type(value).encode('utf-8')))
- for name, value in params if value is not None)
+ '%s=%s' % (name, quote(six.text_type(value).encode('utf-8')))
+ for name, value in params
+ if value is not None)
if not param_string:
qs_start_char = ''
elif '?' in url:
diff --git a/framework/gcs_helpers.py b/framework/gcs_helpers.py
index a01b565..9da5b11 100644
--- a/framework/gcs_helpers.py
+++ b/framework/gcs_helpers.py
@@ -8,11 +8,9 @@
from __future__ import division
from __future__ import absolute_import
-import base64
import logging
import os
-import time
-import urllib
+from six.moves import urllib
import uuid
from datetime import datetime, timedelta
@@ -21,8 +19,7 @@
from google.appengine.api import images
from google.appengine.api import memcache
from google.appengine.api import urlfetch
-from third_party import cloudstorage
-from third_party.cloudstorage import errors
+from google.cloud import storage
from framework import filecontent
from framework import framework_constants
@@ -56,27 +53,39 @@
pass
-def DeleteObjectFromGCS(object_id):
- object_path = ('/' + app_identity.get_default_gcs_bucket_name() + object_id)
- cloudstorage.delete(object_path)
+def _RemoveLeadingSlash(text):
+ if text.startswith('/'):
+ return text[1:]
+ return text
+
+
+def DeleteObjectFromGCS(blob_name):
+ storage_client = storage.Client()
+ bucket_name = app_identity.get_default_gcs_bucket_name()
+ bucket = storage_client.bucket(bucket_name)
+ validated_blob_name = _RemoveLeadingSlash(blob_name)
+ blob = bucket.get_blob(validated_blob_name)
+ blob.delete()
def StoreObjectInGCS(
content, mime_type, project_id, thumb_width=DEFAULT_THUMB_WIDTH,
thumb_height=DEFAULT_THUMB_HEIGHT, filename=None):
+ storage_client = storage.Client()
bucket_name = app_identity.get_default_gcs_bucket_name()
+ bucket = storage_client.bucket(bucket_name)
guid = uuid.uuid4()
- object_id = '/%s/attachments/%s' % (project_id, guid)
- object_path = '/' + bucket_name + object_id
- options = {}
+ blob_name = '%s/attachments/%s' % (project_id, guid)
+
+ blob = bucket.blob(blob_name)
if filename:
if not framework_constants.FILENAME_RE.match(filename):
logging.info('bad file name: %s' % filename)
filename = 'attachment.dat'
- options['Content-Disposition'] = 'inline; filename="%s"' % filename
- logging.info('Writing with options %r', options)
- with cloudstorage.open(object_path, 'w', mime_type, options=options) as f:
- f.write(content)
+ content_disposition = 'inline; filename="%s"' % filename
+ blob.content_disposition = content_disposition
+ logging.info('Writing with content_disposition %r', content_disposition)
+ blob.upload_from_string(content, content_type=mime_type)
if mime_type in RESIZABLE_MIME_TYPES:
# Create and save a thumbnail too.
@@ -93,11 +102,12 @@
# detail.
logging.exception(e)
if thumb_content:
- thumb_path = '%s-thumbnail' % object_path
- with cloudstorage.open(thumb_path, 'w', 'image/png') as f:
- f.write(thumb_content)
+ thumb_blob_name = '%s-thumbnail' % blob_name
+ thumb_blob = bucket.blob(thumb_blob_name)
+ thumb_blob.upload_from_string(thumb_content, content_type='image/png')
- return object_id
+ # Our database, sadly, stores these with the leading slash.
+ return '/%s' % blob_name
def CheckMimeTypeResizable(mime_type):
@@ -151,7 +161,7 @@
object_id = object_id[1:]
url = result.format(
bucket=bucket,
- object_id=urllib.quote_plus(object_id),
+ object_id=urllib.parse.quote_plus(object_id),
token=app_identity.get_access_token(scopes)[0])
attachment_url = _FetchSignedURL(url)
@@ -166,42 +176,39 @@
return '/missing-gcs-url'
-def MaybeCreateDownload(bucket_name, object_id, filename):
+def MaybeCreateDownload(bucket_name, blob_name, filename):
"""If the obj is not huge, and no download version exists, create it."""
- src = '/%s%s' % (bucket_name, object_id)
- dst = '/%s%s-download' % (bucket_name, object_id)
- cloudstorage.validate_file_path(src)
- cloudstorage.validate_file_path(dst)
- logging.info('Maybe create %r from %r', dst, src)
+ validated_blob_name = _RemoveLeadingSlash(blob_name)
+ dst_blob_name = '%s-download' % validated_blob_name
+ logging.info('Maybe create %r from %r', dst_blob_name, validated_blob_name)
if IS_DEV_APPSERVER:
logging.info('dev environment never makes download copies.')
return False
- # If "Download" object already exists, we are done.
- try:
- cloudstorage.stat(dst)
+ storage_client = storage.Client()
+ bucket = storage_client.bucket(bucket_name)
+
+ # Validate "View" object.
+ src_blob = bucket.get_blob(validated_blob_name)
+ if not src_blob:
+ return False
+ # If "Download" object already exists, it's already created.
+ # `Bucket.blob` doesn't make an HTTP request.
+ dst_blob = bucket.blob(dst_blob_name)
+ if dst_blob.exists():
logging.info('Download version of attachment already exists')
return True
- except errors.NotFoundError:
- pass
-
- # If "View" object is huge, give up.
- src_stat = cloudstorage.stat(src)
- if src_stat.st_size > MAX_ATTACH_SIZE_TO_COPY:
+ # If "View" object is huge, don't create a download.
+ if src_blob.size > MAX_ATTACH_SIZE_TO_COPY:
logging.info('Download version of attachment would be too big')
return False
- with cloudstorage.open(src, 'r') as infile:
- content = infile.read()
- logging.info('opened GCS object and read %r bytes', len(content))
- content_type = src_stat.content_type
- options = {
- 'Content-Disposition': 'attachment; filename="%s"' % filename,
- }
- logging.info('Writing with options %r', options)
- with cloudstorage.open(dst, 'w', content_type, options=options) as outfile:
- outfile.write(content)
+ copied_dst_blob = bucket.copy_blob(src_blob, bucket, dst_blob_name)
+ content_disposition = 'attachment; filename="%s"' % filename
+ logging.info('Copying with content_disposition %r', content_disposition)
+ copied_dst_blob.content_disposition = content_disposition
+ copied_dst_blob.patch()
logging.info('done writing')
return True
diff --git a/framework/jsonfeed.py b/framework/jsonfeed.py
index 44e9cea..b7d85ac 100644
--- a/framework/jsonfeed.py
+++ b/framework/jsonfeed.py
@@ -12,7 +12,7 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
import json
import logging
@@ -21,6 +21,8 @@
import settings
from framework import framework_constants
+from framework import flaskservlet
+from framework import servlet_helpers
from framework import permissions
from framework import servlet
from framework import xsrf
@@ -49,7 +51,7 @@
Returns:
A dictionary of json data.
"""
- raise servlet.MethodNotSupportedError()
+ raise servlet_helpers.MethodNotSupportedError()
def _DoRequestHandling(self, request, mr):
"""Do permission checking, page processing, and response formatting."""
@@ -72,7 +74,7 @@
if self.CHECK_SAME_APP and not settings.local_mode:
calling_app_id = request.headers.get('X-Appengine-Inbound-Appid')
if calling_app_id != app_identity.get_application_id():
- self.response.status = httplib.FORBIDDEN
+ self.response.status = http_client.FORBIDDEN
return
self._CheckForMovedProject(mr, request)
@@ -89,7 +91,7 @@
self.abort(400, msg)
except permissions.PermissionException as e:
logging.info('Trapped PermissionException %s', e)
- self.response.status = httplib.FORBIDDEN
+ self.response.status = http_client.FORBIDDEN
# pylint: disable=unused-argument
# pylint: disable=arguments-differ
@@ -132,3 +134,99 @@
"""Internal tasks are JSON feeds that can only be reached by our own code."""
CHECK_SECURITY_TOKEN = False
+
+
+class FlaskJsonFeed(flaskservlet.FlaskServlet):
+ """A convenient base class for JSON feeds."""
+
+ # By default, JSON output is compact. Subclasses can set this to
+ # an integer, like 4, for pretty-printed output.
+ JSON_INDENT = None
+
+ # Some JSON handlers can only be accessed from our own app.
+ CHECK_SAME_APP = False
+
+ def HandleRequest(self, _mr):
+ """Override this method to implement handling of the request.
+
+ Args:
+ mr: common information parsed from the HTTP request.
+
+ Returns:
+ A dictionary of json data.
+ """
+ raise servlet_helpers.MethodNotSupportedError()
+
+ def _DoRequestHandling(self, request, mr):
+ """Do permission checking, page processing, and response formatting."""
+ try:
+ if self.CHECK_SECURITY_TOKEN and mr.auth.user_id:
+ try:
+ logging.info('request in jsonfeed is %r', request)
+ xsrf.ValidateToken(mr.token, mr.auth.user_id, request.path)
+ except xsrf.TokenIncorrect:
+ logging.info('using token path "xhr"')
+ xsrf.ValidateToken(mr.token, mr.auth.user_id, xsrf.XHR_SERVLET_PATH)
+
+ if self.CHECK_SAME_APP and not settings.local_mode:
+ calling_app_id = request.headers.get('X-Appengine-Inbound-Appid')
+ if calling_app_id != app_identity.get_application_id():
+ self.response.status = http_client.FORBIDDEN
+ return
+
+ self._CheckForMovedProject(mr, request)
+ self.AssertBasePermission(mr)
+
+ json_data = self.HandleRequest(mr)
+
+ self._RenderJsonResponse(json_data)
+
+ except query2ast.InvalidQueryError as e:
+ logging.warning('Trapped InvalidQueryError: %s', e)
+ logging.exception(e)
+ msg = e.message if e.message else 'invalid query'
+ self.abort(400, msg)
+ except permissions.PermissionException as e:
+ logging.info('Trapped PermissionException %s', e)
+ self.response.status = http_client.FORBIDDEN
+
+ # pylint: disable=unused-argument
+ # pylint: disable=arguments-differ
+ # Note: unused arguments necessary because they are specified in
+ # registerpages.py as an extra URL validation step even though we
+ # do our own URL parsing in monorailrequest.py
+ def get(self, **kwargs):
+ """Collect page-specific and generic info, then render the page.
+
+ Args:
+ project_name: string project name parsed from the URL by webapp2,
+ but we also parse it out in our code.
+ viewed_username: string user email parsed from the URL by webapp2,
+ but we also parse it out in our code.
+ hotlist_id: string hotlist id parsed from the URL by webapp2,
+ but we also parse it out in our code.
+ """
+ self._DoRequestHandling(self.mr.request, self.mr)
+
+ # pylint: disable=unused-argument
+ # pylint: disable=arguments-differ
+ def post(self, **kwargs):
+ """Parse the request, check base perms, and call form-specific code."""
+ self._DoRequestHandling(self.mr.request, self.mr)
+
+ def _RenderJsonResponse(self, json_data):
+ """Serialize the data as JSON so that it can be sent to the browser."""
+ json_str = json.dumps(json_data, indent=self.JSON_INDENT)
+ logging.debug(
+ 'Sending JSON response: %r length: %r',
+ json_str[:framework_constants.LOGGING_MAX_LENGTH], len(json_str))
+ self.response.content_type = framework_constants.CONTENT_TYPE_JSON
+ self.response.headers['X-Content-Type-Options'] = (
+ framework_constants.CONTENT_TYPE_JSON_OPTIONS)
+ self.response.set_data(XSSI_PREFIX + json_str)
+
+
+class FlaskInternalTask(FlaskJsonFeed):
+ """Internal tasks are JSON feeds that can only be reached by our own code."""
+
+ CHECK_SECURITY_TOKEN = False
diff --git a/framework/monorailrequest.py b/framework/monorailrequest.py
index 94dd9d6..7fe2918 100644
--- a/framework/monorailrequest.py
+++ b/framework/monorailrequest.py
@@ -16,7 +16,7 @@
import endpoints
import logging
import re
-import urllib
+from six.moves import urllib
import ezt
import six
@@ -240,8 +240,10 @@
"""
with self.profiler.Phase('basic parsing'):
self.request = request
+ self.request_path = request.path
self.current_page_url = request.url
- self.current_page_url_encoded = urllib.quote_plus(self.current_page_url)
+ self.current_page_url_encoded = urllib.parse.quote_plus(
+ self.current_page_url)
# Only accept a hostport from the request that looks valid.
if not _HOSTPORT_RE.match(request.host):
@@ -251,9 +253,8 @@
logging.info('Request: %s', self.current_page_url)
with self.profiler.Phase('path parsing'):
- (viewed_user_val, self.project_name,
- self.hotlist_id, self.hotlist_name) = _ParsePathIdentifiers(
- self.request.path)
+ (viewed_user_val, self.project_name, self.hotlist_id,
+ self.hotlist_name) = _ParsePathIdentifiers(self.request_path)
self.viewed_username = _GetViewedEmail(
viewed_user_val, self.cnxn, services)
with self.profiler.Phase('qs parsing'):
@@ -296,8 +297,10 @@
"""
with self.profiler.Phase('basic parsing'):
self.request = request
+ self.request_path = request.base_url[len(request.host_url) - 1:]
self.current_page_url = request.url
- self.current_page_url_encoded = urllib.quote_plus(self.current_page_url)
+ self.current_page_url_encoded = urllib.parse.quote_plus(
+ self.current_page_url)
# Only accept a hostport from the request that looks valid.
if not _HOSTPORT_RE.match(request.host):
@@ -308,7 +311,7 @@
with self.profiler.Phase('path parsing'):
(viewed_user_val, self.project_name, self.hotlist_id,
- self.hotlist_name) = _ParsePathIdentifiers(self.request.url)
+ self.hotlist_name) = _ParsePathIdentifiers(self.request_path)
self.viewed_username = _GetViewedEmail(
viewed_user_val, self.cnxn, services)
with self.profiler.Phase('qs parsing'):
@@ -335,10 +338,10 @@
prod_debug_allowed = self.perms.HasPerm(
permissions.VIEW_DEBUG, self.auth.user_id, None)
self.debug_enabled = (
- request.args.get('debug') and
+ request.values.get('debug') and
(settings.local_mode or prod_debug_allowed))
# temporary option for perf testing on staging instance.
- if request.args.get('disable_cache'):
+ if request.values.get('disable_cache'):
if settings.local_mode or 'staging' in request.host:
self.use_cached_searches = False
@@ -597,7 +600,7 @@
if hasattr(self.request, 'params'):
value = self.request.params.get(query_param_name)
else:
- value = self.request.args.get(query_param_name)
+ value = self.request.values.get(query_param_name)
assert value is None or isinstance(value, six.text_type)
using_default = value is None
if using_default:
@@ -620,7 +623,7 @@
if hasattr(self.request, 'params'):
value = self.request.params.get(query_param_name)
else:
- value = self.request.args.get(query_param_name)
+ value = self.request.values.get(query_param_name)
if value is None or value == '':
return default_value
@@ -641,7 +644,7 @@
if hasattr(self.request, 'params'):
params = self.request.params.get(query_param_name)
else:
- params = self.request.args.get(query_param_name)
+ params = self.request.values.get(query_param_name)
if params is None:
return default_value
if not params:
@@ -665,7 +668,7 @@
if hasattr(self.request, 'params'):
value = self.request.params.get(query_param_name)
else:
- value = self.request.args.get(query_param_name)
+ value = self.request.values.get(query_param_name)
if value is None:
return default_value
@@ -698,15 +701,14 @@
if split_path[0] == 'p':
project_name = split_path[1]
if split_path[0] == 'u' or split_path[0] == 'users':
- viewed_user_val = urllib.unquote(split_path[1])
+ viewed_user_val = urllib.parse.unquote(split_path[1])
if len(split_path) >= 4 and split_path[2] == 'hotlists':
try:
- hotlist_id = int(
- urllib.unquote(split_path[3].split('.')[0]))
+ hotlist_id = int(urllib.parse.unquote(split_path[3].split('.')[0]))
except ValueError:
raw_last_path = (split_path[3][:-3] if
split_path[3].endswith('.do') else split_path[3])
- last_path = urllib.unquote(raw_last_path)
+ last_path = urllib.parse.unquote(raw_last_path)
match = framework_bizobj.RE_HOTLIST_NAME.match(
last_path)
if not match:
@@ -716,7 +718,7 @@
hotlist_name = last_path.lower()
if split_path[0] == 'g':
- viewed_user_val = urllib.unquote(split_path[1])
+ viewed_user_val = urllib.parse.unquote(split_path[1])
return viewed_user_val, project_name, hotlist_id, hotlist_name
diff --git a/framework/permissions.py b/framework/permissions.py
index eb40dc7..ac46af6 100644
--- a/framework/permissions.py
+++ b/framework/permissions.py
@@ -104,7 +104,6 @@
# Permission to flag any artifact as spam.
FLAG_SPAM = 'FlagSpam'
VERDICT_SPAM = 'VerdictSpam'
-MODERATE_SPAM = 'ModerateSpam'
# Permissions for custom fields.
EDIT_FIELD_DEF = 'EditFieldDef'
@@ -123,10 +122,10 @@
tracker_pb2.ApprovalStatus.NOT_APPROVED]
STANDARD_ADMIN_PERMISSIONS = [
- EDIT_PROJECT, CREATE_PROJECT, PUBLISH_PROJECT, VIEW_DEBUG,
- EDIT_OTHER_USERS, CUSTOMIZE_PROCESS,
- VIEW_QUOTA, EDIT_QUOTA, ADMINISTER_SITE,
- EDIT_ANY_MEMBER_NOTES, VERDICT_SPAM, MODERATE_SPAM]
+ EDIT_PROJECT, CREATE_PROJECT, PUBLISH_PROJECT, VIEW_DEBUG, EDIT_OTHER_USERS,
+ CUSTOMIZE_PROCESS, VIEW_QUOTA, EDIT_QUOTA, ADMINISTER_SITE,
+ EDIT_ANY_MEMBER_NOTES, VERDICT_SPAM
+]
STANDARD_ISSUE_PERMISSIONS = [
VIEW, EDIT_ISSUE, ADD_ISSUE_COMMENT, DELETE_ISSUE, FLAG_SPAM]
@@ -315,18 +314,16 @@
consider_restrictions=False)
ADMIN_PERMISSIONSET = PermissionSet(
- [VIEW, VIEW_CONTRIBUTOR_LIST,
- CREATE_PROJECT, EDIT_PROJECT, PUBLISH_PROJECT, VIEW_DEBUG,
- COMMIT, CUSTOMIZE_PROCESS, FLAG_SPAM, VERDICT_SPAM, SET_STAR,
- ADMINISTER_SITE, VIEW_EXPIRED_PROJECT, EDIT_OTHER_USERS,
- VIEW_QUOTA, EDIT_QUOTA,
- CREATE_ISSUE, ADD_ISSUE_COMMENT, EDIT_ISSUE, DELETE_ISSUE,
- EDIT_ISSUE_APPROVAL,
- VIEW_INBOUND_MESSAGES,
- DELETE_ANY, EDIT_ANY_MEMBER_NOTES,
- CREATE_GROUP, EDIT_GROUP, DELETE_GROUP, VIEW_GROUP,
- MODERATE_SPAM, CREATE_HOTLIST],
- consider_restrictions=False)
+ [
+ VIEW, VIEW_CONTRIBUTOR_LIST, CREATE_PROJECT, EDIT_PROJECT,
+ PUBLISH_PROJECT, VIEW_DEBUG, COMMIT, CUSTOMIZE_PROCESS, FLAG_SPAM,
+ VERDICT_SPAM, SET_STAR, ADMINISTER_SITE, VIEW_EXPIRED_PROJECT,
+ EDIT_OTHER_USERS, VIEW_QUOTA, EDIT_QUOTA, CREATE_ISSUE,
+ ADD_ISSUE_COMMENT, EDIT_ISSUE, DELETE_ISSUE, EDIT_ISSUE_APPROVAL,
+ VIEW_INBOUND_MESSAGES, DELETE_ANY, EDIT_ANY_MEMBER_NOTES, CREATE_GROUP,
+ EDIT_GROUP, DELETE_GROUP, VIEW_GROUP, CREATE_HOTLIST
+ ],
+ consider_restrictions=False)
GROUP_IMPORT_BORG_PERMISSIONSET = PermissionSet(
[CREATE_GROUP, VIEW_GROUP, EDIT_GROUP])
diff --git a/framework/reap.py b/framework/reap.py
index 6bc5cf0..d0b721f 100644
--- a/framework/reap.py
+++ b/framework/reap.py
@@ -16,6 +16,7 @@
RUN_DURATION_LIMIT = 50 * 60 # 50 minutes
+# TODO: change to FlaskInternalTask when convert to Flask
class Reap(jsonfeed.InternalTask):
"""Look for doomed and deletable projects and delete them."""
@@ -123,3 +124,9 @@
for f in project_purge_functions:
f(cnxn, project_id)
yield project_id
+
+ # def GetReap(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostReap(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/framework/redis_utils.py b/framework/redis_utils.py
deleted file mode 100644
index 440603b..0000000
--- a/framework/redis_utils.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""A utility module for interfacing with Redis conveniently. """
-import json
-import logging
-import threading
-
-import redis
-
-import settings
-from protorpc import protobuf
-
-connection_pool = None
-
-def CreateRedisClient():
- # type: () -> redis.Redis
- """Creates a Redis object which implements Redis protocol and connection.
-
- Returns:
- redis.Redis object initialized with a connection pool.
- None on failure.
- """
- global connection_pool
- if not connection_pool:
- connection_pool = redis.BlockingConnectionPool(
- host=settings.redis_host,
- port=settings.redis_port,
- max_connections=1,
- # When Redis is not available, calls hang indefinitely without these.
- socket_connect_timeout=2,
- socket_timeout=2,
- )
- return redis.Redis(connection_pool=connection_pool)
-
-
-def AsyncVerifyRedisConnection():
- # type: () -> None
- """Verifies the redis connection in a separate thread.
-
- Note that although an exception in the thread won't kill the main thread,
- it is not risk free.
-
- AppEngine joins with any running threads before finishing the request.
- If this thread were to hang indefinitely, then it would cause the request
- to hit DeadlineExceeded, thus still causing a user facing failure.
-
- We mitigate this risk by setting socket timeouts on our connection pool.
-
- # TODO(crbug/monorail/8221): Remove this code during this milestone.
- """
-
- def _AsyncVerifyRedisConnection():
- logging.info('AsyncVerifyRedisConnection thread started.')
- redis_client = CreateRedisClient()
- VerifyRedisConnection(redis_client)
-
- logging.info('Starting thread for AsyncVerifyRedisConnection.')
- threading.Thread(target=_AsyncVerifyRedisConnection).start()
-
-
-def FormatRedisKey(key, prefix=None):
- # type: (int, str) -> str
- """Converts key to string and prepends the prefix.
-
- Args:
- key: Integer key.
- prefix: String to prepend to the key.
-
- Returns:
- Formatted key with the format: "namespace:prefix:key".
- """
- formatted_key = ''
- if prefix:
- if prefix[-1] != ':':
- prefix += ':'
- formatted_key += prefix
- return formatted_key + str(key)
-
-def VerifyRedisConnection(redis_client, msg=None):
- # type: (redis.Redis, Optional[str]) -> bool
- """Checks the connection to Redis to ensure a connection can be established.
-
- Args:
- redis_client: client to connect and ping redis server. This can be a redis
- or fakeRedis object.
- msg: string for used logging information.
-
- Returns:
- True when connection to server is valid.
- False when an error occurs or redis_client is None.
- """
- if not redis_client:
- logging.info('Redis client is set to None on connect in %s', msg)
- return False
- try:
- redis_client.ping()
- logging.info('Redis client successfully connected to Redis in %s', msg)
- return True
- except redis.RedisError as identifier:
- # TODO(crbug/monorail/8224): We can downgrade this to warning once we are
- # done with the switchover from memcache. Before that, log it to ensure we
- # see it.
- logging.exception(
- 'Redis error occurred while connecting to server in %s: %s', msg,
- identifier)
- return False
-
-
-def SerializeValue(value, pb_class=None):
- # type: (Any, Optional[type|classobj]) -> str
- """Serialize object as for storage in Redis. """
- if pb_class and pb_class is not int:
- return protobuf.encode_message(value)
- else:
- return json.dumps(value)
-
-
-def DeserializeValue(value, pb_class=None):
- # type: (str, Optional[type|classobj]) -> Any
- """Deserialize a string to create a python object. """
- if pb_class and pb_class is not int:
- return protobuf.decode_message(pb_class, value)
- else:
- return json.loads(value)
diff --git a/framework/registerpages_helpers.py b/framework/registerpages_helpers.py
index 9982639..0073e57 100644
--- a/framework/registerpages_helpers.py
+++ b/framework/registerpages_helpers.py
@@ -9,7 +9,7 @@
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
import logging
import webapp2
@@ -27,7 +27,7 @@
self.response.headers.add('Strict-Transport-Security',
'max-age=31536000; includeSubDomains')
self.response.status = (
- httplib.MOVED_PERMANENTLY if permanent else httplib.FOUND)
+ http_client.MOVED_PERMANENTLY if permanent else http_client.FOUND)
return Redirect
@@ -74,8 +74,8 @@
self.response.headers.add('Strict-Transport-Security',
'max-age=31536000; includeSubDomains')
if permanent and not keep_qs:
- self.response.status = httplib.MOVED_PERMANENTLY
+ self.response.status = http_client.MOVED_PERMANENTLY
else:
- self.response.status = httplib.FOUND
+ self.response.status = http_client.FOUND
return RedirectInScope
diff --git a/framework/servlet.py b/framework/servlet.py
index e1c0cf1..462939a 100644
--- a/framework/servlet.py
+++ b/framework/servlet.py
@@ -21,16 +21,16 @@
from __future__ import absolute_import
import gc
-import httplib
+from six.moves import http_client
import json
import logging
import os
import random
import time
-import urllib
+from six.moves import urllib
import ezt
-from third_party import httpagentparser
+import httpagentparser
from google.appengine.api import app_identity
from google.appengine.api import modules
@@ -199,8 +199,8 @@
except MySQLdb.OperationalError as e:
logging.exception(e)
page_data = {
- 'http_response_code': httplib.SERVICE_UNAVAILABLE,
- 'requested_url': self.request.url,
+ 'http_response_code': http_client.SERVICE_UNAVAILABLE,
+ 'requested_url': self.request.url,
}
self.template = template_helpers.GetTemplate(
'templates/framework/database-maintenance.ezt',
@@ -228,15 +228,15 @@
except exceptions.InputException as e:
logging.info('Rejecting invalid input: %r', e)
- self.response.status = httplib.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
except exceptions.NoSuchProjectException as e:
logging.info('Rejecting invalid request: %r', e)
- self.response.status = httplib.NOT_FOUND
+ self.response.status = http_client.NOT_FOUND
except xsrf.TokenIncorrect as e:
logging.info('Bad XSRF token: %r', e.message)
- self.response.status = httplib.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
except permissions.BannedUserException as e:
logging.warning('The user has been banned')
@@ -246,7 +246,7 @@
except ratelimiter.RateLimitExceeded as e:
logging.info('RateLimitExceeded Exception %s', e)
- self.response.status = httplib.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
self.response.body = 'Slow your roll.'
finally:
@@ -369,8 +369,8 @@
# Display the missing permissions template.
page_data = {
'reason': e.message,
- 'http_response_code': httplib.FORBIDDEN,
- }
+ 'http_response_code': http_client.FORBIDDEN,
+ }
with self.mr.profiler.Phase('gather base data'):
page_data.update(self.GatherBaseData(self.mr, nonce))
self._AddHelpDebugPageData(page_data)
@@ -431,7 +431,7 @@
except permissions.PermissionException as e:
logging.warning('Trapped permission-related exception "%s".', e)
# TODO(jrobbins): can we do better than an error page? not much.
- self.response.status = httplib.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
def _DoCommonRequestProcessing(self, request, mr):
"""Do common processing dependent on having the user and project pbs."""
diff --git a/framework/servlet_helpers.py b/framework/servlet_helpers.py
index 89fe587..fddec26 100644
--- a/framework/servlet_helpers.py
+++ b/framework/servlet_helpers.py
@@ -12,7 +12,7 @@
import calendar
import datetime
import logging
-import urllib
+from six.moves import urllib
import time
from framework import framework_constants
@@ -175,7 +175,7 @@
perm, mr.auth.effective_ids, project, permissions.GetRestrictions(art))
-def ComputeIssueEntryURL(mr, config):
+def ComputeIssueEntryURL(mr):
"""Compute the URL to use for the "New issue" subtab.
Args:
@@ -187,13 +187,12 @@
case. Otherewise it will be a fully qualified URL that includes some
query string parameters.
"""
- # TODO: remove the custom_issue_entry_url since its no longer
- if not config.custom_issue_entry_url:
+ isMember = framework_bizobj.UserIsInProject(mr.project, mr.auth.effective_ids)
+ if mr.project_name == 'chromium' and not isMember:
+ return '/p/chromium/issues/wizard'
+ else:
return '/p/%s/issues/entry' % (mr.project_name)
- return '/p/chromium/issues/wizard'
-
-
def IssueListURL(mr, config, query_string=None):
"""Make an issue list URL for non-members or members."""
url = '/p/%s%s' % (mr.project_name, urls.ISSUE_LIST)
@@ -201,7 +200,7 @@
url += '?' + query_string
elif framework_bizobj.UserIsInProject(mr.project, mr.auth.effective_ids):
if config and config.member_default_query:
- url += '?q=' + urllib.quote_plus(config.member_default_query)
+ url += '?q=' + urllib.parse.quote_plus(config.member_default_query)
return url
@@ -212,22 +211,25 @@
def SafeCreateLoginURL(mr, continue_url=None):
"""Make a login URL w/ a detailed continue URL, otherwise use a short one."""
- continue_url = continue_url or mr.current_page_url
+ current_page_url = mr.current_page_url_encoded
+ if settings.local_mode:
+ current_page_url = mr.current_page_url
+ continue_url = continue_url or current_page_url
try:
- url = users.create_login_url(continue_url)
+ # Check the URL length
+ generated_login_url = users.create_login_url(continue_url)
except users.RedirectTooLongError:
if mr.project_name:
- url = users.create_login_url('/p/%s' % mr.project_name)
+ continue_url = '/p/%s' % mr.project_name
else:
- url = users.create_login_url('/')
-
- # Give the user a choice of existing accounts in their session
- # or the option to add an account, even if they are currently
- # signed in to exactly one account.
- if mr.auth.user_id:
- # Notice: this makes assuptions about the output of users.create_login_url,
- # which can change at any time. See https://crbug.com/monorail/3352.
- url = url.replace('/ServiceLogin', '/AccountChooser', 1)
+ continue_url = '/'
+ if settings.local_mode:
+ return generated_login_url
+ # URL to allow user to choose an account when >1 account is logged in.
+ redirect_url = (
+ 'https://accounts.google.com/AccountChooser?continue='
+ 'https://uc.appengine.google.com/_ah/conflogin%3Fcontinue%3D{}')
+ url = redirect_url.format(continue_url)
return url
diff --git a/framework/template_helpers.py b/framework/template_helpers.py
index 52a25d7..7ebb7e2 100644
--- a/framework/template_helpers.py
+++ b/framework/template_helpers.py
@@ -11,7 +11,7 @@
import cgi
import cStringIO
-import httplib
+from six.moves import http_client
import logging
import time
import types
@@ -157,7 +157,7 @@
if content_type:
response.content_type = content_type
- response.status = data.get('http_response_code', httplib.OK)
+ response.status = data.get('http_response_code', http_client.OK)
whole_page = self.GetResponse(data)
if data.get('prevent_sniffing'):
for sniff_pattern, sniff_replacement in SNIFFABLE_PATTERNS.items():
@@ -171,13 +171,13 @@
if content_type:
response.content_type = content_type
- response.status_code = data.get('http_response_code', httplib.OK)
+ response.status_code = data.get('http_response_code', http_client.OK)
whole_page = self.GetResponse(data)
if data.get('prevent_sniffing'):
for sniff_pattern, sniff_replacement in SNIFFABLE_PATTERNS.items():
whole_page = whole_page.replace(sniff_pattern, sniff_replacement)
start = time.time()
- response.response = whole_page
+ response.set_data(whole_page)
logging.info('wrote response in %dms', int((time.time() - start) * 1000))
def GetResponse(self, data):
diff --git a/framework/test/deleteusers_test.py b/framework/test/deleteusers_test.py
index 4cadbbd..2609867 100644
--- a/framework/test/deleteusers_test.py
+++ b/framework/test/deleteusers_test.py
@@ -11,7 +11,7 @@
import logging
import mock
import unittest
-import urllib
+from six.moves import urllib
from framework import cloud_tasks_helpers
from framework import deleteusers
@@ -175,7 +175,7 @@
self.assertEqual(get_client_mock().create_task.call_count, 2)
- query = urllib.urlencode(
+ query = urllib.parse.urlencode(
{'emails': 'user1@gmail.com,user2@gmail.com,user3@gmail.com'})
expected_task = self.generate_simple_task(
urls.DELETE_USERS_TASK + '.do', query)
@@ -185,7 +185,7 @@
expected_task,
retry=cloud_tasks_helpers._DEFAULT_RETRY)
- query = urllib.urlencode({'emails': 'user4@gmail.com'})
+ query = urllib.parse.urlencode({'emails': 'user4@gmail.com'})
expected_task = self.generate_simple_task(
urls.DELETE_USERS_TASK + '.do', query)
@@ -204,7 +204,7 @@
self.assertEqual(get_client_mock().create_task.call_count, 1)
emails = 'user1@gmail.com,user2@gmail.com,user3@gmail.com,user4@gmail.com'
- query = urllib.urlencode({'emails': emails})
+ query = urllib.parse.urlencode({'emails': emails})
expected_task = self.generate_simple_task(
urls.DELETE_USERS_TASK + '.do', query)
diff --git a/framework/test/flask_servlet_test.py b/framework/test/flask_servlet_test.py
index 443f919..4c47209 100644
--- a/framework/test/flask_servlet_test.py
+++ b/framework/test/flask_servlet_test.py
@@ -71,13 +71,15 @@
self.page_class._CheckForMovedProject(mr, request)
mock_abort.assert_not_called()
- @mock.patch('flask.abort')
- def testCheckForMovedProject_Redirect(self, mock_abort):
+ @mock.patch('flask.redirect')
+ def testCheckForMovedProject_Redirect(self, mock_redirect):
project = fake.Project(project_name='proj', moved_to='http://example.com')
request, mr = testing_helpers.GetRequestObjects(
path='/p/proj', project=project)
+ self.page_class.request_path = '/p/test'
self.page_class._CheckForMovedProject(mr, request)
- mock_abort.assert_called_once_with(302)
+ mock_redirect.assert_called_once_with(
+ 'http://127.0.0.1/hosting/moved?project=proj', code=302)
def testGatherBaseData(self):
project = self.page_class.services.project.TestAddProject(
diff --git a/framework/test/gcs_helpers_test.py b/framework/test/gcs_helpers_test.py
index 3500e40..a7c01d0 100644
--- a/framework/test/gcs_helpers_test.py
+++ b/framework/test/gcs_helpers_test.py
@@ -10,143 +10,123 @@
import mock
import unittest
-import uuid
-import mox
-
-from google.appengine.api import app_identity
-from google.appengine.api import images
from google.appengine.api import urlfetch
from google.appengine.ext import testbed
-from third_party import cloudstorage
+from google.cloud import storage
-from framework import filecontent
from framework import gcs_helpers
-from testing import fake
from testing import testing_helpers
class GcsHelpersTest(unittest.TestCase):
def setUp(self):
- self.mox = mox.Mox()
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_memcache_stub()
+ self.testbed.init_app_identity_stub()
+
+ self.test_storage_client = mock.create_autospec(
+ storage.Client, instance=True)
+ mock.patch.object(
+ storage, 'Client', return_value=self.test_storage_client).start()
def tearDown(self):
- self.mox.UnsetStubs()
- self.mox.ResetAll()
self.testbed.deactivate()
+ self.test_storage_client = None
+ mock.patch.stopall()
def testDeleteObjectFromGCS(self):
object_id = 'aaaaa'
- bucket_name = 'test_bucket'
- object_path = '/' + bucket_name + object_id
-
- self.mox.StubOutWithMock(app_identity, 'get_default_gcs_bucket_name')
- app_identity.get_default_gcs_bucket_name().AndReturn(bucket_name)
-
- self.mox.StubOutWithMock(cloudstorage, 'delete')
- cloudstorage.delete(object_path)
-
- self.mox.ReplayAll()
-
gcs_helpers.DeleteObjectFromGCS(object_id)
- self.mox.VerifyAll()
+ # Verify order of client calls.
+ self.test_storage_client.assert_has_calls(
+ [
+ mock.call.bucket().get_blob(object_id),
+ mock.call.bucket().get_blob().delete()
+ ])
- def testStoreObjectInGCS_ResizableMimeType(self):
+ def testDeleteLegacyObjectFromGCS(self):
+ # A previous python module expected object ids with leading '/'
+ object_id = '/aaaaa'
+ object_id_without_leading_slash = 'aaaaa'
+ gcs_helpers.DeleteObjectFromGCS(object_id)
+ # Verify order of client calls.
+ self.test_storage_client.assert_has_calls(
+ [
+ mock.call.bucket().get_blob(object_id_without_leading_slash),
+ mock.call.bucket().get_blob().delete()
+ ])
+
+ @mock.patch(
+ 'google.appengine.api.images.resize', return_value=mock.MagicMock())
+ @mock.patch('uuid.uuid4')
+ def testStoreObjectInGCS_ResizableMimeType(self, mock_uuid4, mock_resize):
guid = 'aaaaa'
+ mock_uuid4.return_value = guid
project_id = 100
- object_id = '/%s/attachments/%s' % (project_id, guid)
- bucket_name = 'test_bucket'
- object_path = '/' + bucket_name + object_id
+ blob_name = '%s/attachments/%s' % (project_id, guid)
+ thumb_blob_name = '%s/attachments/%s-thumbnail' % (project_id, guid)
mime_type = 'image/png'
content = 'content'
- thumb_content = 'thumb_content'
-
- self.mox.StubOutWithMock(app_identity, 'get_default_gcs_bucket_name')
- app_identity.get_default_gcs_bucket_name().AndReturn(bucket_name)
-
- self.mox.StubOutWithMock(uuid, 'uuid4')
- uuid.uuid4().AndReturn(guid)
-
- self.mox.StubOutWithMock(cloudstorage, 'open')
- cloudstorage.open(
- object_path, 'w', mime_type, options={}
- ).AndReturn(fake.FakeFile())
- cloudstorage.open(object_path + '-thumbnail', 'w', mime_type).AndReturn(
- fake.FakeFile())
-
- self.mox.StubOutWithMock(images, 'resize')
- images.resize(content, gcs_helpers.DEFAULT_THUMB_WIDTH,
- gcs_helpers.DEFAULT_THUMB_HEIGHT).AndReturn(thumb_content)
-
- self.mox.ReplayAll()
ret_id = gcs_helpers.StoreObjectInGCS(
content, mime_type, project_id, gcs_helpers.DEFAULT_THUMB_WIDTH,
gcs_helpers.DEFAULT_THUMB_HEIGHT)
- self.mox.VerifyAll()
- self.assertEqual(object_id, ret_id)
+ self.assertEqual('/%s' % blob_name, ret_id)
+ self.test_storage_client.assert_has_calls(
+ [
+ mock.call.bucket().blob(blob_name),
+ mock.call.bucket().blob().upload_from_string(
+ content, content_type=mime_type),
+ mock.call.bucket().blob(thumb_blob_name),
+ ])
+ mock_resize.assert_called()
- def testStoreObjectInGCS_NotResizableMimeType(self):
+ @mock.patch(
+ 'google.appengine.api.images.resize', return_value=mock.MagicMock())
+ @mock.patch('uuid.uuid4')
+ def testStoreObjectInGCS_NotResizableMimeType(self, mock_uuid4, mock_resize):
guid = 'aaaaa'
+ mock_uuid4.return_value = guid
project_id = 100
- object_id = '/%s/attachments/%s' % (project_id, guid)
- bucket_name = 'test_bucket'
- object_path = '/' + bucket_name + object_id
+ blob_name = '%s/attachments/%s' % (project_id, guid)
mime_type = 'not_resizable_mime_type'
content = 'content'
- self.mox.StubOutWithMock(app_identity, 'get_default_gcs_bucket_name')
- app_identity.get_default_gcs_bucket_name().AndReturn(bucket_name)
-
- self.mox.StubOutWithMock(uuid, 'uuid4')
- uuid.uuid4().AndReturn(guid)
-
- self.mox.StubOutWithMock(cloudstorage, 'open')
- options = {'Content-Disposition': 'inline; filename="file.ext"'}
- cloudstorage.open(
- object_path, 'w', mime_type, options=options
- ).AndReturn(fake.FakeFile())
-
- self.mox.ReplayAll()
-
ret_id = gcs_helpers.StoreObjectInGCS(
content, mime_type, project_id, gcs_helpers.DEFAULT_THUMB_WIDTH,
- gcs_helpers.DEFAULT_THUMB_HEIGHT, filename='file.ext')
- self.mox.VerifyAll()
- self.assertEqual(object_id, ret_id)
+ gcs_helpers.DEFAULT_THUMB_HEIGHT)
+ self.assertEqual('/%s' % blob_name, ret_id)
+ self.test_storage_client.assert_has_calls(
+ [
+ mock.call.bucket().blob(blob_name),
+ mock.call.bucket().blob().upload_from_string(
+ content, content_type=mime_type),
+ ])
+ mock_resize.assert_not_called()
- def testCheckMemeTypeResizable(self):
+ def testCheckMimeTypeResizable(self):
for resizable_mime_type in gcs_helpers.RESIZABLE_MIME_TYPES:
gcs_helpers.CheckMimeTypeResizable(resizable_mime_type)
with self.assertRaises(gcs_helpers.UnsupportedMimeType):
gcs_helpers.CheckMimeTypeResizable('not_resizable_mime_type')
- def testStoreLogoInGCS(self):
- file_name = 'test_file.png'
+ @mock.patch('framework.filecontent.GuessContentTypeFromFilename')
+ @mock.patch('framework.gcs_helpers.StoreObjectInGCS')
+ def testStoreLogoInGCS(self, mock_store_object, mock_guess_content):
+ blob_name = 123
+ mock_store_object.return_value = blob_name
mime_type = 'image/png'
+ mock_guess_content.return_value = mime_type
+ file_name = 'test_file.png'
content = 'test content'
project_id = 100
- object_id = 123
-
- self.mox.StubOutWithMock(filecontent, 'GuessContentTypeFromFilename')
- filecontent.GuessContentTypeFromFilename(file_name).AndReturn(mime_type)
-
- self.mox.StubOutWithMock(gcs_helpers, 'StoreObjectInGCS')
- gcs_helpers.StoreObjectInGCS(
- content, mime_type, project_id,
- thumb_width=gcs_helpers.LOGO_THUMB_WIDTH,
- thumb_height=gcs_helpers.LOGO_THUMB_HEIGHT).AndReturn(object_id)
-
- self.mox.ReplayAll()
ret_id = gcs_helpers.StoreLogoInGCS(file_name, content, project_id)
- self.mox.VerifyAll()
- self.assertEqual(object_id, ret_id)
+ self.assertEqual(blob_name, ret_id)
@mock.patch('google.appengine.api.urlfetch.fetch')
def testFetchSignedURL_Success(self, mock_fetch):
diff --git a/framework/test/jsonfeed_test.py b/framework/test/jsonfeed_test.py
index 0a569e2..4ca83fa 100644
--- a/framework/test/jsonfeed_test.py
+++ b/framework/test/jsonfeed_test.py
@@ -8,7 +8,7 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
import logging
import unittest
@@ -102,10 +102,10 @@
# Note that request has no X-Appengine-Inbound-Appid set.
self.assertIsNone(feed.get())
self.assertFalse(feed.handle_request_called)
- self.assertEqual(httplib.FORBIDDEN, feed.response.status)
+ self.assertEqual(http_client.FORBIDDEN, feed.response.status)
self.assertIsNone(feed.post())
self.assertFalse(feed.handle_request_called)
- self.assertEqual(httplib.FORBIDDEN, feed.response.status)
+ self.assertEqual(http_client.FORBIDDEN, feed.response.status)
def testSameAppOnly_InternalOnlyCalledFromWrongApp(self):
feed = TestableJsonFeed()
@@ -114,10 +114,10 @@
feed.mr.request.headers['X-Appengine-Inbound-Appid'] = 'wrong'
self.assertIsNone(feed.get())
self.assertFalse(feed.handle_request_called)
- self.assertEqual(httplib.FORBIDDEN, feed.response.status)
+ self.assertEqual(http_client.FORBIDDEN, feed.response.status)
self.assertIsNone(feed.post())
self.assertFalse(feed.handle_request_called)
- self.assertEqual(httplib.FORBIDDEN, feed.response.status)
+ self.assertEqual(http_client.FORBIDDEN, feed.response.status)
class TestableJsonFeed(jsonfeed.JsonFeed):
diff --git a/framework/test/redis_utils_test.py b/framework/test/redis_utils_test.py
deleted file mode 100644
index a4128ce..0000000
--- a/framework/test/redis_utils_test.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Tests for the Redis utility module."""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import fakeredis
-import unittest
-
-from framework import redis_utils
-from proto import features_pb2
-
-
-class RedisHelperTest(unittest.TestCase):
-
- def testFormatRedisKey(self):
- redis_key = redis_utils.FormatRedisKey(111)
- self.assertEqual('111', redis_key)
- redis_key = redis_utils.FormatRedisKey(222, prefix='foo:')
- self.assertEqual('foo:222', redis_key)
- redis_key = redis_utils.FormatRedisKey(333, prefix='bar')
- self.assertEqual('bar:333', redis_key)
-
- def testCreateRedisClient(self):
- self.assertIsNone(redis_utils.connection_pool)
- redis_client_1 = redis_utils.CreateRedisClient()
- self.assertIsNotNone(redis_client_1)
- self.assertIsNotNone(redis_utils.connection_pool)
- redis_client_2 = redis_utils.CreateRedisClient()
- self.assertIsNotNone(redis_client_2)
- self.assertIsNot(redis_client_1, redis_client_2)
-
- def testConnectionVerification(self):
- server = fakeredis.FakeServer()
- client = None
- self.assertFalse(redis_utils.VerifyRedisConnection(client))
- server.connected = True
- client = fakeredis.FakeRedis(server=server)
- self.assertTrue(redis_utils.VerifyRedisConnection(client))
- server.connected = False
- self.assertFalse(redis_utils.VerifyRedisConnection(client))
-
- def testSerializeDeserializeInt(self):
- serialized_int = redis_utils.SerializeValue(123)
- self.assertEqual('123', serialized_int)
- self.assertEquals(123, redis_utils.DeserializeValue(serialized_int))
-
- def testSerializeDeserializeStr(self):
- serialized = redis_utils.SerializeValue('123')
- self.assertEqual('"123"', serialized)
- self.assertEquals('123', redis_utils.DeserializeValue(serialized))
-
- def testSerializeDeserializePB(self):
- features = features_pb2.Hotlist.HotlistItem(
- issue_id=7949, rank=0, adder_id=333, date_added=1525)
- serialized = redis_utils.SerializeValue(
- features, pb_class=features_pb2.Hotlist.HotlistItem)
- self.assertIsInstance(serialized, str)
- deserialized = redis_utils.DeserializeValue(
- serialized, pb_class=features_pb2.Hotlist.HotlistItem)
- self.assertIsInstance(deserialized, features_pb2.Hotlist.HotlistItem)
- self.assertEquals(deserialized, features)
diff --git a/framework/test/servlet_helpers_test.py b/framework/test/servlet_helpers_test.py
index 19f4ea4..870de40 100644
--- a/framework/test/servlet_helpers_test.py
+++ b/framework/test/servlet_helpers_test.py
@@ -110,17 +110,14 @@
path='/p/proj/issues/detail?id=123&q=term',
project=self.project)
- url = servlet_helpers.ComputeIssueEntryURL(mr, self.config)
+ url = servlet_helpers.ComputeIssueEntryURL(mr)
self.assertEqual('/p/proj/issues/entry', url)
- def testComputeIssueEntryURL_Customized(self):
+ def testComputeIssueEntryURL_Chromium(self):
_request, mr = testing_helpers.GetRequestObjects(
- path='/p/proj/issues/detail?id=123&q=term',
- project=self.project)
- mr.auth.user_id = 111
- self.config.custom_issue_entry_url = FORM_URL
+ path='/p/chromium/issues/detail?id=123&q=term', project=self.project)
- url = servlet_helpers.ComputeIssueEntryURL(mr, self.config)
+ url = servlet_helpers.ComputeIssueEntryURL(mr)
self.assertIn('/issues/wizard', url)
class IssueListURLTest(unittest.TestCase):
@@ -223,8 +220,27 @@
def testCreateLoginUrl(self):
_, mr = testing_helpers.GetRequestObjects(
path='/p/proj/issues/detail?id=123&q=term', project=self.project)
- url = servlet_helpers.SafeCreateLoginURL(mr, '/continue')
- self.assertIn('/continue', url)
+ url = servlet_helpers.SafeCreateLoginURL(mr, 'current.url.to.return.to')
+ # Ensure that users can pick their account to use with Monorail.
+ self.assertIn('/AccountChooser', url)
+ self.assertIn('current.url.to.return.to', url)
+
+ def testCreateLoginUrl(self):
+ _, mr = testing_helpers.GetRequestObjects(
+ path='/p/proj/issues/detail?id=123&q=term', project=self.project)
+ url = servlet_helpers.SafeCreateLoginURL(mr, 'current.url.to.return.to')
+ # Ensure that users can pick their account to use with Monorail.
+ self.assertIn('/AccountChooser', url)
+ self.assertIn('current.url.to.return.to', url)
+
+ def testCreateEscapedLoginUrlFromMR(self):
+ _, mr = testing_helpers.GetRequestObjects(
+ path='/p/proj/issues/detail?id=123&q=term', project=self.project)
+ mr.current_page_url_encoded = (
+ 'https%3A%2F%2Fbugs.chromium.org'
+ '%2Fp%2Fchromium%2Fissues%2Fentry')
+ url = servlet_helpers.SafeCreateLoginURL(mr)
+ self.assertIn('https%3A%2F%2Fbugs.chromium.org%2Fp', url)
def testCreateLogoutUrl(self):
_, mr = testing_helpers.GetRequestObjects(
diff --git a/framework/test/ts_mon_js_test.py b/framework/test/ts_mon_js_test.py
index bcd4060..4231b76 100644
--- a/framework/test/ts_mon_js_test.py
+++ b/framework/test/ts_mon_js_test.py
@@ -12,9 +12,11 @@
import unittest
from mock import patch
+import flask
import webapp2
from google.appengine.ext import testbed
+from framework.ts_mon_js import FlaskMonorailTSMonJSHandler
from framework.ts_mon_js import MonorailTSMonJSHandler
from services import service_manager
@@ -71,3 +73,69 @@
self.assertEqual(res.status_int, 201)
self.assertEqual(res.body, 'Ok.')
+
+
+class FlaskMonorailTSMonJSHandlerTest(unittest.TestCase):
+
+ def setUp(self):
+ self.testbed = testbed.Testbed()
+ self.testbed.activate()
+ self.testbed.init_user_stub()
+ self.services = service_manager.Services()
+ self.app = flask.Flask('test_app')
+ self.app.config['TESTING'] = True
+ self.app.add_url_rule(
+ '/_/ts_mon_js.do',
+ view_func=FlaskMonorailTSMonJSHandler(
+ services=self.services).PostMonorailTSMonJSHandler,
+ methods=['POST'])
+
+ def tearDown(self):
+ self.testbed.deactivate()
+
+ @patch('framework.xsrf.ValidateToken')
+ @patch('time.time')
+ def testFlaskSubmitMetrics(self, _mockTime, _mockValidateToken):
+ """Test normal case POSTing metrics."""
+ _mockTime.return_value = 1537821859
+ res = self.app.test_client().post(
+ '/_/ts_mon_js.do',
+ data = json.dumps(
+ {
+ 'metrics':
+ [
+ {
+ 'MetricInfo':
+ {
+ 'Name':
+ 'monorail/frontend/issue_update_latency',
+ 'ValueType':
+ 2,
+ },
+ 'Cells':
+ [
+ {
+ 'value':
+ {
+ 'sum': 1234,
+ 'count': 4321,
+ 'buckets':
+ {
+ 0: 123,
+ 1: 321,
+ 2: 213,
+ },
+ },
+ 'fields':
+ {
+ 'client_id': '789',
+ 'host_name': 'rutabaga',
+ 'document_visible': True,
+ },
+ 'start_time': 1537821799,
+ }
+ ],
+ }
+ ],
+ }))
+ self.assertEqual(res.status_code, 201)
diff --git a/framework/test/warmup_test.py b/framework/test/warmup_test.py
index d8ddb65..8140fc7 100644
--- a/framework/test/warmup_test.py
+++ b/framework/test/warmup_test.py
@@ -24,8 +24,7 @@
#self.services = service_manager.Services(
# cache_manager=self.cache_manager)
self.services = service_manager.Services()
- self.servlet = warmup.Warmup(
- 'req', 'res', services=self.services)
+ self.servlet = warmup.Warmup('req', 'res', services=self.services)
def testHandleRequest_NothingToDo(self):
diff --git a/framework/trimvisitedpages.py b/framework/trimvisitedpages.py
index 8d6ec23..f036c10 100644
--- a/framework/trimvisitedpages.py
+++ b/framework/trimvisitedpages.py
@@ -10,6 +10,8 @@
from framework import jsonfeed
+
+# TODO: change to FlaskInternalTask when convert to Flask
class TrimVisitedPages(jsonfeed.InternalTask):
"""Look for users with more than 10 visited hotlists and deletes extras."""
@@ -17,3 +19,9 @@
def HandleRequest(self, mr):
"""Delete old RecentHotlist2User rows when there are too many"""
self.services.user.TrimUserVisitedHotlists(mr.cnxn)
+
+ # def GetTrimVisitedPages(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostTrimVisitedPages(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/framework/ts_mon_js.py b/framework/ts_mon_js.py
index 61be1a8..0dbb121 100644
--- a/framework/ts_mon_js.py
+++ b/framework/ts_mon_js.py
@@ -13,11 +13,13 @@
from framework import xsrf
from gae_ts_mon.handlers import TSMonJSHandler
+from gae_ts_mon.flask_handlers import TSMonJSFlaskHandler
from google.appengine.api import users
from infra_libs import ts_mon
+import flask
STANDARD_FIELDS = [
ts_mon.StringField('client_id'),
@@ -108,3 +110,37 @@
return True
except xsrf.TokenIncorrect:
return False
+
+
+class FlaskMonorailTSMonJSHandler(TSMonJSFlaskHandler):
+
+ def __init__(self, services=None):
+ super(FlaskMonorailTSMonJSHandler, self).__init__(
+ flask=flask, services=services)
+ self.register_metrics(
+ [
+ ISSUE_CREATE_LATENCY_METRIC, ISSUE_UPDATE_LATENCY_METRIC,
+ AUTOCOMPLETE_POPULATE_LATENCY_METRIC,
+ CHARTS_SWITCH_DATE_RANGE_METRIC, ISSUE_COMMENTS_LOAD_LATENCY_METRIC,
+ DOM_CONTENT_LOADED_METRIC, ISSUE_LIST_LOAD_LATENCY_METRIC
+ ])
+
+ def xsrf_is_valid(self, body):
+ """This method expects the body dictionary to include two fields:
+ `token` and `user_id`.
+ """
+ cnxn = sql.MonorailConnection()
+ token = body.get('token')
+ user = users.get_current_user()
+ email = user.email() if user else None
+
+ services = self.service
+ auth = authdata.AuthData.FromEmail(cnxn, email, services, autocreate=False)
+ try:
+ xsrf.ValidateToken(token, auth.user_id, xsrf.XHR_SERVLET_PATH)
+ return True
+ except xsrf.TokenIncorrect:
+ return False
+
+ def PostMonorailTSMonJSHandler(self):
+ return self.post()
diff --git a/framework/urls.py b/framework/urls.py
index d7e5e3a..f8a4a4d 100644
--- a/framework/urls.py
+++ b/framework/urls.py
@@ -54,10 +54,8 @@
NOTIFY_APPROVAL_CHANGE_TASK = '/_task/notifyApprovalChange'
NOTIFY_RULES_DELETED_TASK = '/_task/notifyRulesDeleted'
OUTBOUND_EMAIL_TASK = '/_task/outboundEmail'
-SPAM_DATA_EXPORT_TASK = '/_task/spamDataExport'
BAN_SPAMMER_TASK = '/_task/banSpammer'
ISSUE_DATE_ACTION_TASK = '/_task/issueDateAction'
-COMPONENT_DATA_EXPORT_TASK = '/_task/componentDataExportTask'
SEND_WIPEOUT_USER_LISTS_TASK = '/_task/sendWipeoutUserListsTask'
DELETE_WIPEOUT_USERS_TASK = '/_task/deleteWipeoutUsersTask'
DELETE_USERS_TASK = '/_task/deleteUsersTask'
@@ -72,12 +70,9 @@
REINDEX_QUEUE_CRON = '/_cron/reindexQueue'
RAMCACHE_CONSOLIDATE_CRON = '/_cron/ramCacheConsolidate'
REAP_CRON = '/_cron/reap'
-SPAM_DATA_EXPORT_CRON = '/_cron/spamDataExport'
LOAD_API_CLIENT_CONFIGS_CRON = '/_cron/loadApiClientConfigs'
TRIM_VISITED_PAGES_CRON = '/_cron/trimVisitedPages'
DATE_ACTION_CRON = '/_cron/dateAction'
-SPAM_TRAINING_CRON = '/_cron/spamTraining'
-COMPONENT_DATA_EXPORT_CRON = '/_cron/componentDataExport'
WIPEOUT_SYNC_CRON = '/_cron/wipeoutSync'
# URLs of handlers needed for GAE instance management.
@@ -153,5 +148,3 @@
TS_MON_JS = '/_/jstsmon'
CSP_REPORT = '/csp'
-
-SPAM_MODERATION_QUEUE = '/spamqueue'
diff --git a/framework/warmup.py b/framework/warmup.py
index ef8a53d..ace76ce 100644
--- a/framework/warmup.py
+++ b/framework/warmup.py
@@ -13,6 +13,7 @@
from framework import jsonfeed
+# TODO(https://crbug.com/monorail/6511): Convert to FlaskInternalTask
class Warmup(jsonfeed.InternalTask):
"""Placeholder for warmup work. Used only to enable min_idle_instances."""
@@ -25,6 +26,11 @@
'success': 1,
}
+ # def GetWarmup(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+# TODO(https://crbug.com/monorail/6511): Convert to FlaskInternalTask
class Start(jsonfeed.InternalTask):
"""Placeholder for start work. Used only to enable manual_scaling."""
@@ -37,7 +43,11 @@
'success': 1,
}
+ # def GetStart(self, **kwargs):
+ # return self.handler(**kwargs)
+
+# TODO(https://crbug.com/monorail/6511): Convert to FlaskInternalTask
class Stop(jsonfeed.InternalTask):
"""Placeholder for stop work. Used only to enable manual_scaling."""
@@ -49,3 +59,6 @@
return {
'success': 1,
}
+
+ # def GetStop(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/karma.conf.js b/karma.conf.js
index f8117ae..83306fa 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -4,8 +4,6 @@
* license that can be found in the LICENSE file.
*/
-const path = require('path');
-
process.env.CHROME_BIN = require('puppeteer').executablePath();
module.exports = function(config) {
@@ -23,6 +21,8 @@
ui: 'bdd',
checkLeaks: true,
globals: [
+ // Used for submitting Issue Wizard Feedback.
+ 'userfeedback',
'CS_env',
// __tsMonClient probably shouldn't be allowed to
// leak between tests, but locating the current source of these
@@ -62,7 +62,7 @@
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['parallel', 'mocha', 'sinon'],
+ frameworks: ['mocha', 'sinon', 'webpack'],
// list of files / patterns to load in the browser
@@ -89,21 +89,12 @@
'karma-coverage',
'karma-mocha',
'karma-mocha-reporter',
- 'karma-parallel',
'karma-sinon',
'karma-sourcemap-loader',
'karma-webpack',
'@chopsui/karma-reporter',
],
- parallelOptions: {
- // Our builder is on a VM with 8 CPUs, so force this
- // to run the same number of shards locally too.
- // Vary this number to stress test order dependencies.
- executors: isDebug ? 1 : 7, // Defaults to cpu-count - 1
- shardStrategy: 'round-robin',
- },
-
webpack: {
// webpack configuration
devtool: 'inline-source-map',
diff --git a/monorailapp.py b/monorailapp.py
index e937267..fd7c259 100644
--- a/monorailapp.py
+++ b/monorailapp.py
@@ -14,7 +14,6 @@
import logging
import webapp2
-from flask import Flask
from werkzeug.middleware import dispatcher
from components import endpoints_webapp2
@@ -22,7 +21,7 @@
import flaskregisterpages
import registerpages
-from framework import sorting, urls
+from framework import sorting
from services import api_svc_v1
from services import service_manager
@@ -38,22 +37,21 @@
gae_ts_mon.initialize_adhoc(app)
flask_regist = flaskregisterpages.ServletRegistry()
-
app = dispatcher.DispatcherMiddleware(
- app, {
- urls.EXCESSIVE_ACTIVITY:
- flask_regist.RegisterExcesiveActivity(services),
+ app,
+ {
+ '/hosting_old': flask_regist.RegisterOldHostUrl(services),
+ '/projects': flask_regist.RegisterRedirectProjectUrl(),
+ # '/_': flask_regist.RegisterMONSetUrl(services),
+ # '/hosting': flask_regist.RegisterHostingUrl(services),
+ # '/g': flask_regist.RegisterGroupUrls(services),
+ # '/p': flask_regist.RegisterProjectUrls(services),
+ # '/u': flask_regist.RegisterUserUrls(services),
+ # '/_task': flask_regist.RegisterTaskUrl(services),
+ # '/_cron': flask_regist.RegisterCronUrl(services),
+ # '/_backend': flask_regist.RegisterBackendUrl(services),
+ # '/_ah': flask_regist.RegisterAHUrl(services),
})
endpoints = endpoints_webapp2.api_server(
[api_svc_v1.MonorailApi, api_svc_v1.ClientConfigApi])
-
-# TODO(crbug/monorail/8221): Remove this code during this milestone.
-# It only serves as a safe way to begin connecting to redis without risking
-# user facing problems.
-try:
- logging.info('Starting initial redis connection verification.')
- from framework import redis_utils
- redis_utils.AsyncVerifyRedisConnection()
-except: # pylint: disable=bare-except
- logging.exception('Exception when instantiating redis connection.')
diff --git a/package-lock.json b/package-lock.json
index e800add..d24774a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -79,7 +79,6 @@
"karma-coverage": "^2.2.0",
"karma-mocha": "^2.0.1",
"karma-mocha-reporter": "^2.2.5",
- "karma-parallel": "^0.3.1",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.8",
"karma-webpack": "^5.0.0",
@@ -98,7 +97,7 @@
},
"node_modules/@ampproject/remapping": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@ampproject/remapping/-/remapping-2.1.2.tgz",
"integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.0"
@@ -109,7 +108,7 @@
},
"node_modules/@babel/code-frame": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/code-frame/-/code-frame-7.16.7.tgz",
"integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
"dependencies": {
"@babel/highlight": "^7.16.7"
@@ -120,7 +119,7 @@
},
"node_modules/@babel/compat-data": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/compat-data/-/compat-data-7.17.7.tgz",
"integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
"engines": {
"node": ">=6.9.0"
@@ -128,7 +127,7 @@
},
"node_modules/@babel/core": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/core/-/core-7.17.9.tgz",
"integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==",
"dependencies": {
"@ampproject/remapping": "^2.1.0",
@@ -157,7 +156,7 @@
},
"node_modules/@babel/generator": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/generator/-/generator-7.17.9.tgz",
"integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==",
"dependencies": {
"@babel/types": "^7.17.0",
@@ -170,7 +169,7 @@
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
"integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
"dev": true,
"dependencies": {
@@ -182,7 +181,7 @@
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
"integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
"dev": true,
"dependencies": {
@@ -195,7 +194,7 @@
},
"node_modules/@babel/helper-compilation-targets": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
"integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
"dependencies": {
"@babel/compat-data": "^7.17.7",
@@ -212,7 +211,7 @@
},
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz",
"integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==",
"dev": true,
"dependencies": {
@@ -233,7 +232,7 @@
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz",
"integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==",
"dev": true,
"dependencies": {
@@ -249,7 +248,7 @@
},
"node_modules/@babel/helper-define-polyfill-provider": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
"integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
"dev": true,
"dependencies": {
@@ -268,7 +267,7 @@
},
"node_modules/@babel/helper-environment-visitor": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
"integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
"dependencies": {
"@babel/types": "^7.16.7"
@@ -279,7 +278,7 @@
},
"node_modules/@babel/helper-explode-assignable-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
"integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
"dev": true,
"dependencies": {
@@ -291,7 +290,7 @@
},
"node_modules/@babel/helper-function-name": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
"integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
"dependencies": {
"@babel/template": "^7.16.7",
@@ -303,7 +302,7 @@
},
"node_modules/@babel/helper-hoist-variables": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
"integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
"dependencies": {
"@babel/types": "^7.16.7"
@@ -314,7 +313,7 @@
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
"integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==",
"dev": true,
"dependencies": {
@@ -326,7 +325,7 @@
},
"node_modules/@babel/helper-module-imports": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
"integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
"dependencies": {
"@babel/types": "^7.16.7"
@@ -337,7 +336,7 @@
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
"integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.16.7",
@@ -355,7 +354,7 @@
},
"node_modules/@babel/helper-optimise-call-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
"integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
"dev": true,
"dependencies": {
@@ -367,7 +366,7 @@
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
"integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
"engines": {
"node": ">=6.9.0"
@@ -375,7 +374,7 @@
},
"node_modules/@babel/helper-remap-async-to-generator": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
"integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
"dev": true,
"dependencies": {
@@ -389,7 +388,7 @@
},
"node_modules/@babel/helper-replace-supers": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
"integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
"dev": true,
"dependencies": {
@@ -405,7 +404,7 @@
},
"node_modules/@babel/helper-simple-access": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
"integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
"dependencies": {
"@babel/types": "^7.17.0"
@@ -416,7 +415,7 @@
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
"integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
"dev": true,
"dependencies": {
@@ -428,7 +427,7 @@
},
"node_modules/@babel/helper-split-export-declaration": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
"integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
"dependencies": {
"@babel/types": "^7.16.7"
@@ -439,7 +438,7 @@
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
"integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
"engines": {
"node": ">=6.9.0"
@@ -447,7 +446,7 @@
},
"node_modules/@babel/helper-validator-option": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
"integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
"engines": {
"node": ">=6.9.0"
@@ -455,7 +454,7 @@
},
"node_modules/@babel/helper-wrap-function": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
"integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
"dev": true,
"dependencies": {
@@ -470,7 +469,7 @@
},
"node_modules/@babel/helpers": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helpers/-/helpers-7.17.9.tgz",
"integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
"dependencies": {
"@babel/template": "^7.16.7",
@@ -483,7 +482,7 @@
},
"node_modules/@babel/highlight": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/highlight/-/highlight-7.17.9.tgz",
"integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -496,7 +495,7 @@
},
"node_modules/@babel/parser": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/parser/-/parser-7.17.9.tgz",
"integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==",
"bin": {
"parser": "bin/babel-parser.js"
@@ -507,7 +506,7 @@
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
"integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
"dev": true,
"dependencies": {
@@ -522,7 +521,7 @@
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
"integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
"dev": true,
"dependencies": {
@@ -539,7 +538,7 @@
},
"node_modules/@babel/plugin-proposal-async-generator-functions": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
"integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
"dev": true,
"dependencies": {
@@ -556,7 +555,7 @@
},
"node_modules/@babel/plugin-proposal-class-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
"integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
"dev": true,
"dependencies": {
@@ -572,7 +571,7 @@
},
"node_modules/@babel/plugin-proposal-class-static-block": {
"version": "7.17.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz",
"integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==",
"dev": true,
"dependencies": {
@@ -589,7 +588,7 @@
},
"node_modules/@babel/plugin-proposal-decorators": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz",
"integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==",
"dev": true,
"dependencies": {
@@ -609,7 +608,7 @@
},
"node_modules/@babel/plugin-proposal-dynamic-import": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
"integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
"dev": true,
"dependencies": {
@@ -625,7 +624,7 @@
},
"node_modules/@babel/plugin-proposal-export-namespace-from": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
"integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
"dev": true,
"dependencies": {
@@ -641,7 +640,7 @@
},
"node_modules/@babel/plugin-proposal-json-strings": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
"integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
"dev": true,
"dependencies": {
@@ -657,7 +656,7 @@
},
"node_modules/@babel/plugin-proposal-logical-assignment-operators": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
"integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
"dev": true,
"dependencies": {
@@ -673,7 +672,7 @@
},
"node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
"integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
"dev": true,
"dependencies": {
@@ -689,7 +688,7 @@
},
"node_modules/@babel/plugin-proposal-numeric-separator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
"integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
"dev": true,
"dependencies": {
@@ -705,7 +704,7 @@
},
"node_modules/@babel/plugin-proposal-object-rest-spread": {
"version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz",
"integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==",
"dev": true,
"dependencies": {
@@ -724,7 +723,7 @@
},
"node_modules/@babel/plugin-proposal-optional-catch-binding": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
"integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
"dev": true,
"dependencies": {
@@ -740,7 +739,7 @@
},
"node_modules/@babel/plugin-proposal-optional-chaining": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
"integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
"dev": true,
"dependencies": {
@@ -757,7 +756,7 @@
},
"node_modules/@babel/plugin-proposal-private-methods": {
"version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
"integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==",
"dev": true,
"dependencies": {
@@ -773,7 +772,7 @@
},
"node_modules/@babel/plugin-proposal-private-property-in-object": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
"integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
"dev": true,
"dependencies": {
@@ -791,7 +790,7 @@
},
"node_modules/@babel/plugin-proposal-unicode-property-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
"integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
"dev": true,
"dependencies": {
@@ -807,7 +806,7 @@
},
"node_modules/@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
"dependencies": {
@@ -819,7 +818,7 @@
},
"node_modules/@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
"dependencies": {
@@ -831,7 +830,7 @@
},
"node_modules/@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"dependencies": {
@@ -846,7 +845,7 @@
},
"node_modules/@babel/plugin-syntax-decorators": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz",
"integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==",
"dev": true,
"dependencies": {
@@ -861,7 +860,7 @@
},
"node_modules/@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"dependencies": {
@@ -873,7 +872,7 @@
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"dependencies": {
@@ -885,7 +884,7 @@
},
"node_modules/@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
"dependencies": {
@@ -897,7 +896,7 @@
},
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
"integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.16.7"
@@ -911,7 +910,7 @@
},
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
"dependencies": {
@@ -923,7 +922,7 @@
},
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
"dependencies": {
@@ -935,7 +934,7 @@
},
"node_modules/@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
"dependencies": {
@@ -947,7 +946,7 @@
},
"node_modules/@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"dependencies": {
@@ -959,7 +958,7 @@
},
"node_modules/@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
"dependencies": {
@@ -971,7 +970,7 @@
},
"node_modules/@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
"dependencies": {
@@ -983,7 +982,7 @@
},
"node_modules/@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"dependencies": {
@@ -998,7 +997,7 @@
},
"node_modules/@babel/plugin-syntax-top-level-await": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
"dependencies": {
@@ -1013,7 +1012,7 @@
},
"node_modules/@babel/plugin-syntax-typescript": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
"integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==",
"dev": true,
"dependencies": {
@@ -1028,7 +1027,7 @@
},
"node_modules/@babel/plugin-transform-arrow-functions": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
"integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
"dev": true,
"dependencies": {
@@ -1043,7 +1042,7 @@
},
"node_modules/@babel/plugin-transform-async-to-generator": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
"integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
"dev": true,
"dependencies": {
@@ -1060,7 +1059,7 @@
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
"integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
"dev": true,
"dependencies": {
@@ -1075,7 +1074,7 @@
},
"node_modules/@babel/plugin-transform-block-scoping": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
"integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
"dev": true,
"dependencies": {
@@ -1090,7 +1089,7 @@
},
"node_modules/@babel/plugin-transform-classes": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
"integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
"dev": true,
"dependencies": {
@@ -1112,7 +1111,7 @@
},
"node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
"integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
"dev": true,
"dependencies": {
@@ -1127,7 +1126,7 @@
},
"node_modules/@babel/plugin-transform-destructuring": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz",
"integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==",
"dev": true,
"dependencies": {
@@ -1142,7 +1141,7 @@
},
"node_modules/@babel/plugin-transform-dotall-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
"integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
"dev": true,
"dependencies": {
@@ -1158,7 +1157,7 @@
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
"integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
"dev": true,
"dependencies": {
@@ -1173,7 +1172,7 @@
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
"integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
"dev": true,
"dependencies": {
@@ -1189,7 +1188,7 @@
},
"node_modules/@babel/plugin-transform-for-of": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
"integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
"dev": true,
"dependencies": {
@@ -1204,7 +1203,7 @@
},
"node_modules/@babel/plugin-transform-function-name": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
"integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
"dev": true,
"dependencies": {
@@ -1221,7 +1220,7 @@
},
"node_modules/@babel/plugin-transform-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
"integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
"dev": true,
"dependencies": {
@@ -1236,7 +1235,7 @@
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
"integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
"dev": true,
"dependencies": {
@@ -1251,7 +1250,7 @@
},
"node_modules/@babel/plugin-transform-modules-amd": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
"integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
"dev": true,
"dependencies": {
@@ -1268,7 +1267,7 @@
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
"integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
"dev": true,
"dependencies": {
@@ -1286,7 +1285,7 @@
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
"version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz",
"integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==",
"dev": true,
"dependencies": {
@@ -1305,7 +1304,7 @@
},
"node_modules/@babel/plugin-transform-modules-umd": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
"integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
"dev": true,
"dependencies": {
@@ -1321,7 +1320,7 @@
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
"integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==",
"dev": true,
"dependencies": {
@@ -1336,7 +1335,7 @@
},
"node_modules/@babel/plugin-transform-new-target": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
"integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
"dev": true,
"dependencies": {
@@ -1351,7 +1350,7 @@
},
"node_modules/@babel/plugin-transform-object-super": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
"integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
"dev": true,
"dependencies": {
@@ -1367,7 +1366,7 @@
},
"node_modules/@babel/plugin-transform-parameters": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
"integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
"dev": true,
"dependencies": {
@@ -1382,7 +1381,7 @@
},
"node_modules/@babel/plugin-transform-property-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
"integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
"dev": true,
"dependencies": {
@@ -1397,7 +1396,7 @@
},
"node_modules/@babel/plugin-transform-react-display-name": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
"integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==",
"dev": true,
"dependencies": {
@@ -1412,7 +1411,7 @@
},
"node_modules/@babel/plugin-transform-react-jsx": {
"version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz",
"integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==",
"dev": true,
"dependencies": {
@@ -1431,7 +1430,7 @@
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz",
"integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==",
"dev": true,
"dependencies": {
@@ -1446,7 +1445,7 @@
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz",
"integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==",
"dev": true,
"dependencies": {
@@ -1462,7 +1461,7 @@
},
"node_modules/@babel/plugin-transform-regenerator": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
"integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==",
"dev": true,
"dependencies": {
@@ -1477,7 +1476,7 @@
},
"node_modules/@babel/plugin-transform-reserved-words": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
"integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
"dev": true,
"dependencies": {
@@ -1492,7 +1491,7 @@
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
"integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
"dev": true,
"dependencies": {
@@ -1507,7 +1506,7 @@
},
"node_modules/@babel/plugin-transform-spread": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
"integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
"dev": true,
"dependencies": {
@@ -1523,7 +1522,7 @@
},
"node_modules/@babel/plugin-transform-sticky-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
"integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
"dev": true,
"dependencies": {
@@ -1538,7 +1537,7 @@
},
"node_modules/@babel/plugin-transform-template-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
"integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
"dev": true,
"dependencies": {
@@ -1553,7 +1552,7 @@
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
"integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
"dev": true,
"dependencies": {
@@ -1568,7 +1567,7 @@
},
"node_modules/@babel/plugin-transform-typescript": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
"integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==",
"dev": true,
"dependencies": {
@@ -1585,7 +1584,7 @@
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
"integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
"dev": true,
"dependencies": {
@@ -1600,7 +1599,7 @@
},
"node_modules/@babel/plugin-transform-unicode-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
"integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
"dev": true,
"dependencies": {
@@ -1616,7 +1615,7 @@
},
"node_modules/@babel/preset-env": {
"version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-env/-/preset-env-7.16.11.tgz",
"integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
"dev": true,
"dependencies": {
@@ -1704,7 +1703,7 @@
},
"node_modules/@babel/preset-modules": {
"version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
"integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
"dev": true,
"dependencies": {
@@ -1720,7 +1719,7 @@
},
"node_modules/@babel/preset-react": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-react/-/preset-react-7.16.7.tgz",
"integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==",
"dev": true,
"dependencies": {
@@ -1740,7 +1739,7 @@
},
"node_modules/@babel/preset-typescript": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz",
"integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==",
"dev": true,
"dependencies": {
@@ -1757,7 +1756,7 @@
},
"node_modules/@babel/runtime": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/runtime/-/runtime-7.17.9.tgz",
"integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
"dependencies": {
"regenerator-runtime": "^0.13.4"
@@ -1768,7 +1767,7 @@
},
"node_modules/@babel/runtime-corejs3": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
"integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==",
"dev": true,
"dependencies": {
@@ -1781,7 +1780,7 @@
},
"node_modules/@babel/template": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/template/-/template-7.16.7.tgz",
"integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
"dependencies": {
"@babel/code-frame": "^7.16.7",
@@ -1794,7 +1793,7 @@
},
"node_modules/@babel/traverse": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/traverse/-/traverse-7.17.9.tgz",
"integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==",
"dependencies": {
"@babel/code-frame": "^7.16.7",
@@ -1814,7 +1813,7 @@
},
"node_modules/@babel/types": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/types/-/types-7.17.0.tgz",
"integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -1826,7 +1825,7 @@
},
"node_modules/@chopsui/chops-signin": {
"version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@chopsui/chops-signin/-/chops-signin-0.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/chops-signin/-/chops-signin-0.3.2.tgz",
"integrity": "sha512-6jL+Bsfma3UtcDkwhh7uEbUSbPJS6reWvL9UlrRcyMq97qQf7GGr4WtAU4rDFRkeOB5W4+dld2YGf3dNomILnQ==",
"dependencies": {
"lit-element": "^2.0.0"
@@ -1834,7 +1833,7 @@
},
"node_modules/@chopsui/karma-reporter": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@chopsui/karma-reporter/-/karma-reporter-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/karma-reporter/-/karma-reporter-1.1.5.tgz",
"integrity": "sha512-vYj8Yrovgqi4lHHB3BSeyGVntS2Ov5KoluSttVTVC862jvtSSflPO58wnWNVgQUJIKxmG5bTA71D1bFC1rUXoQ==",
"dependencies": {
"axe-core": "^3.4.1"
@@ -1845,7 +1844,7 @@
},
"node_modules/@chopsui/karma-reporter/node_modules/axe-core": {
"version": "3.5.6",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.5.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axe-core/-/axe-core-3.5.6.tgz",
"integrity": "sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==",
"engines": {
"node": ">=4"
@@ -1853,17 +1852,17 @@
},
"node_modules/@chopsui/prpc-client": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@chopsui/prpc-client/-/prpc-client-0.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/prpc-client/-/prpc-client-0.0.2.tgz",
"integrity": "sha512-PKWMkcqNMZTw0tYVIYchGzNqgxLhnf/xjQVxvDUHASgCleryVj4oEs6p28WvY1ZEHTPEONWjnNPN1RhZHdqpHA=="
},
"node_modules/@chopsui/tsmon-client": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@chopsui/tsmon-client/-/tsmon-client-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/tsmon-client/-/tsmon-client-1.0.1.tgz",
"integrity": "sha512-snatoVhzUH7B78sNIAbnfnN4DB3qHSD8HC0bdAhGzDGPOEMqm4/PPEDyDk3gyPHtpr1Gomh7sEBoNAY6+RL17A=="
},
"node_modules/@colors/colors": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
"engines": {
"node": ">=0.1.90"
@@ -1871,7 +1870,7 @@
},
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
"engines": {
@@ -1880,7 +1879,7 @@
},
"node_modules/@emotion/babel-plugin": {
"version": "11.9.2",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
"integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==",
"dependencies": {
"@babel/helper-module-imports": "^7.12.13",
@@ -1902,7 +1901,7 @@
},
"node_modules/@emotion/cache": {
"version": "11.7.1",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/cache/-/cache-11.7.1.tgz",
"integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==",
"dependencies": {
"@emotion/memoize": "^0.7.4",
@@ -1914,12 +1913,12 @@
},
"node_modules/@emotion/hash": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
},
"node_modules/@emotion/is-prop-valid": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz",
"integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==",
"dependencies": {
"@emotion/memoize": "^0.7.4"
@@ -1927,12 +1926,12 @@
},
"node_modules/@emotion/memoize": {
"version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/memoize/-/memoize-0.7.5.tgz",
"integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
},
"node_modules/@emotion/react": {
"version": "11.9.0",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/react/-/react-11.9.0.tgz",
"integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==",
"dependencies": {
"@babel/runtime": "^7.13.10",
@@ -1958,7 +1957,7 @@
},
"node_modules/@emotion/serialize": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/serialize/-/serialize-1.0.3.tgz",
"integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==",
"dependencies": {
"@emotion/hash": "^0.8.0",
@@ -1970,12 +1969,12 @@
},
"node_modules/@emotion/sheet": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/sheet/-/sheet-1.1.0.tgz",
"integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g=="
},
"node_modules/@emotion/styled": {
"version": "11.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/styled/-/styled-11.8.1.tgz",
"integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==",
"dependencies": {
"@babel/runtime": "^7.13.10",
@@ -2000,22 +1999,22 @@
},
"node_modules/@emotion/unitless": {
"version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"node_modules/@emotion/utils": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/utils/-/utils-1.1.0.tgz",
"integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
},
"node_modules/@emotion/weak-memoize": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
},
"node_modules/@eslint/eslintrc": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
"integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==",
"dev": true,
"dependencies": {
@@ -2035,7 +2034,7 @@
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
"version": "13.13.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-13.13.0.tgz",
"integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"dependencies": {
@@ -2050,7 +2049,7 @@
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.9.5",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
"integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
"dev": true,
"dependencies": {
@@ -2064,13 +2063,13 @@
},
"node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@istanbuljs/schema/-/schema-0.1.3.tgz",
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true,
"engines": {
@@ -2079,7 +2078,7 @@
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
"integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
"engines": {
"node": ">=6.0.0"
@@ -2087,12 +2086,12 @@
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.11",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
"integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -2101,7 +2100,7 @@
},
"node_modules/@material-ui/core": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/core/-/core-5.0.0-beta.5.tgz",
"integrity": "sha512-ubRMdWJ+Maqvo0P13M+AThaHp5rBBIaURxoQ+Dx4/2Llrm1mepjINDL5PsABabqUbbNc6K+cmqgX4gwEFe7exw==",
"deprecated": "You can now upgrade to @mui/material. See the guide: https://mui.com/guides/migration-v4/",
"dependencies": {
@@ -2147,7 +2146,7 @@
},
"node_modules/@material-ui/icons": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/icons/-/icons-5.0.0-beta.5.tgz",
"integrity": "sha512-C2KHSf8mvDn22rzsV0UfsJyBYI3Nt/LItcKPJBAG9kgqdBHAuLMH2lfKmdMuX55qd8O+NO5rM7aIHdYQRjfcMQ==",
"deprecated": "You can now upgrade to @mui/icons. See the guide: https://mui.com/guides/migration-v4/",
"dependencies": {
@@ -2169,7 +2168,7 @@
},
"node_modules/@material-ui/private-theming": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/private-theming/-/private-theming-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/private-theming/-/private-theming-5.0.0-beta.5.tgz",
"integrity": "sha512-3J642OgHUAga6CYtzWRWG3d5FKG6NMTSxXSyk0Cc85iz/Zvl3n+x7g/MCeq8VjZULv10NzkySIXdNFQi8EKmYA==",
"dependencies": {
"@babel/runtime": "^7.14.8",
@@ -2195,7 +2194,7 @@
},
"node_modules/@material-ui/styled-engine": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/styled-engine/-/styled-engine-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/styled-engine/-/styled-engine-5.0.0-beta.5.tgz",
"integrity": "sha512-tZiHu/GQYoME9Gj7BdIL+giQRt0ptuFIrr3Tm0fIbBB2fXYKzUKiJcggG6R5tjSXX5TUsipXpOIK3h5Kh5ZYtw==",
"dependencies": {
"@babel/runtime": "^7.14.8",
@@ -2225,7 +2224,7 @@
},
"node_modules/@material-ui/styles": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/styles/-/styles-5.0.0-beta.5.tgz",
"integrity": "sha512-qG88DGXNWgsdO8uhmJy0qVXX7TOIvCg9v6sL6CNDluPlao1cgw5UiHBkVBDqMJIOj+KiqThWzh/akzV+oEngSQ==",
"deprecated": "You can now upgrade to @mui/styles. See the guide: https://mui.com/guides/migration-v4/",
"dependencies": {
@@ -2266,7 +2265,7 @@
},
"node_modules/@material-ui/system": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/system/-/system-5.0.0-beta.5.tgz",
"integrity": "sha512-4l0u/66X68xeSVumk5TY3vFS/5xwEhE3z68iRVRt36KwMItlWPEZTHFq2YTJVuBbGH9eQJxOsKRWUmpfswukKQ==",
"deprecated": "You can now upgrade to @mui/system. See the guide: https://mui.com/guides/migration-v4/",
"dependencies": {
@@ -2306,7 +2305,7 @@
},
"node_modules/@material-ui/types": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/types/-/types-6.0.2.tgz",
"integrity": "sha512-/XUca4wUb9pWimLLdM1PE8KS8rTbDEGohSGkGtk3WST7lm23m+8RYv9uOmrvOg/VSsl4bMiOv4t2/LCb+RLbTg==",
"peerDependencies": {
"@types/react": "*"
@@ -2319,7 +2318,7 @@
},
"node_modules/@material-ui/unstyled": {
"version": "5.0.0-alpha.44",
- "resolved": "https://registry.npmjs.org/@material-ui/unstyled/-/unstyled-5.0.0-alpha.44.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/unstyled/-/unstyled-5.0.0-alpha.44.tgz",
"integrity": "sha512-RNFs6CF+V/pdgxtN+hLA3/17CZ6uGEJit0qlvxb7CnSqMcN8dCen7jApnNDr3SMfZB6O0/B/sbnTQAOm1Cl3nQ==",
"deprecated": "You can now upgrade to @mui/base. See the guide: https://mui.com/guides/migration-v4/",
"dependencies": {
@@ -2346,7 +2345,7 @@
},
"node_modules/@material-ui/utils": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/utils/-/utils-5.0.0-beta.5.tgz",
"integrity": "sha512-wtJ3ovXWZdTAz5eLBqvMpYH/IBJb3qMQbGCyL1i00+sf7AUlAuv4QLx+QtX/siA6L7IpxUQVfqpoCpQH1eYRpQ==",
"dependencies": {
"@babel/runtime": "^7.14.8",
@@ -2364,7 +2363,7 @@
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"dependencies": {
@@ -2377,7 +2376,7 @@
},
"node_modules/@nodelib/fs.stat": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"engines": {
@@ -2386,7 +2385,7 @@
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
@@ -2399,13 +2398,13 @@
},
"node_modules/@polka/url": {
"version": "1.0.0-next.21",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@polka/url/-/url-1.0.0-next.21.tgz",
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"node_modules/@popperjs/core": {
"version": "2.11.5",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@popperjs/core/-/core-2.11.5.tgz",
"integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
"funding": {
"type": "opencollective",
@@ -2414,7 +2413,7 @@
},
"node_modules/@sinonjs/commons": {
"version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/commons/-/commons-1.8.3.tgz",
"integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
"dev": true,
"dependencies": {
@@ -2423,7 +2422,7 @@
},
"node_modules/@sinonjs/fake-timers": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
"integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
"dev": true,
"dependencies": {
@@ -2432,7 +2431,7 @@
},
"node_modules/@sinonjs/samsam": {
"version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/samsam/-/samsam-6.1.1.tgz",
"integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
"dev": true,
"dependencies": {
@@ -2443,13 +2442,13 @@
},
"node_modules/@sinonjs/text-encoding": {
"version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
"integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
"dev": true
},
"node_modules/@socket.io/base64-arraybuffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==",
"engines": {
"node": ">= 0.6.0"
@@ -2457,7 +2456,7 @@
},
"node_modules/@testing-library/dom": {
"version": "8.13.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/dom/-/dom-8.13.0.tgz",
"integrity": "sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==",
"dev": true,
"dependencies": {
@@ -2476,7 +2475,7 @@
},
"node_modules/@testing-library/dom/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
@@ -2491,7 +2490,7 @@
},
"node_modules/@testing-library/dom/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
@@ -2507,7 +2506,7 @@
},
"node_modules/@testing-library/dom/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
@@ -2519,7 +2518,7 @@
},
"node_modules/@testing-library/dom/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -2528,7 +2527,7 @@
},
"node_modules/@testing-library/dom/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -2540,7 +2539,7 @@
},
"node_modules/@testing-library/react": {
"version": "12.1.5",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/react/-/react-12.1.5.tgz",
"integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
"dev": true,
"dependencies": {
@@ -2558,7 +2557,7 @@
},
"node_modules/@testing-library/user-event": {
"version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/user-event/-/user-event-14.1.1.tgz",
"integrity": "sha512-XrjH/iEUqNl9lF2HX9YhPNV7Amntkcnpw0Bo1KkRzowNDcgSN9i0nm4Q8Oi5wupgdfPaJNMAWa61A+voD6Kmwg==",
"dev": true,
"engines": {
@@ -2571,34 +2570,34 @@
},
"node_modules/@types/aria-query": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
"dev": true
},
"node_modules/@types/chai": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/chai/-/chai-4.3.1.tgz",
"integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==",
"dev": true
},
"node_modules/@types/component-emitter": {
"version": "1.2.11",
- "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/component-emitter/-/component-emitter-1.2.11.tgz",
"integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ=="
},
"node_modules/@types/cookie": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
},
"node_modules/@types/cors": {
"version": "2.8.12",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/cors/-/cors-2.8.12.tgz",
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
},
"node_modules/@types/eslint": {
"version": "8.4.1",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/eslint/-/eslint-8.4.1.tgz",
"integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
"dev": true,
"dependencies": {
@@ -2608,7 +2607,7 @@
},
"node_modules/@types/eslint-scope": {
"version": "3.7.3",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
"integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
"dev": true,
"dependencies": {
@@ -2618,18 +2617,18 @@
},
"node_modules/@types/estree": {
"version": "0.0.51",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/estree/-/estree-0.0.51.tgz",
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
"dev": true
},
"node_modules/@types/gapi": {
"version": "0.0.41",
- "resolved": "https://registry.npmjs.org/@types/gapi/-/gapi-0.0.41.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/gapi/-/gapi-0.0.41.tgz",
"integrity": "sha512-tmHO66z/f91JZCDqinj/nNvQEszsz/hBT4+MvCSKT5sDzl5Ld/oXZ8WaecCBjRLw2uWKUInUHM9MhEXWkOiNjw=="
},
"node_modules/@types/gapi.auth2": {
"version": "0.0.56",
- "resolved": "https://registry.npmjs.org/@types/gapi.auth2/-/gapi.auth2-0.0.56.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/gapi.auth2/-/gapi.auth2-0.0.56.tgz",
"integrity": "sha512-kGaBtGVCqGS3Y05L56dGVlBpJflxLfwA0zpMQnQgGRFk1tsMPbQnogG51UQjt1vCuYfRO0Jd9/K5KDtzjAbMkA==",
"dependencies": {
"@types/gapi": "*"
@@ -2637,7 +2636,7 @@
},
"node_modules/@types/hoist-non-react-statics": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
"integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
"dependencies": {
"@types/react": "*",
@@ -2646,40 +2645,40 @@
},
"node_modules/@types/html-minifier-terser": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
"dev": true
},
"node_modules/@types/json-schema": {
"version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"node_modules/@types/mocha": {
"version": "9.1.0",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/mocha/-/mocha-9.1.0.tgz",
"integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
"dev": true
},
"node_modules/@types/node": {
"version": "17.0.25",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/node/-/node-17.0.25.tgz",
"integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"node_modules/@types/prop-types": {
"version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
"version": "17.0.44",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react/-/react-17.0.44.tgz",
"integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==",
"dependencies": {
"@types/prop-types": "*",
@@ -2689,7 +2688,7 @@
},
"node_modules/@types/react-dom": {
"version": "17.0.15",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.15.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-dom/-/react-dom-17.0.15.tgz",
"integrity": "sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw==",
"devOptional": true,
"dependencies": {
@@ -2698,7 +2697,7 @@
},
"node_modules/@types/react-is": {
"version": "17.0.3",
- "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-is/-/react-is-17.0.3.tgz",
"integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
"dependencies": {
"@types/react": "*"
@@ -2706,7 +2705,7 @@
},
"node_modules/@types/react-transition-group": {
"version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
"integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==",
"dependencies": {
"@types/react": "*"
@@ -2714,17 +2713,17 @@
},
"node_modules/@types/scheduler": {
"version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/scheduler/-/scheduler-0.16.2.tgz",
"integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"node_modules/@types/use-sync-external-store": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
"integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
},
"node_modules/@types/yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
"dev": true,
"optional": true,
@@ -2734,7 +2733,7 @@
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz",
"integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==",
"dev": true,
"dependencies": {
@@ -2767,7 +2766,7 @@
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
@@ -2782,7 +2781,7 @@
},
"node_modules/@typescript-eslint/parser": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/parser/-/parser-5.20.0.tgz",
"integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==",
"dev": true,
"dependencies": {
@@ -2809,7 +2808,7 @@
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz",
"integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==",
"dev": true,
"dependencies": {
@@ -2826,7 +2825,7 @@
},
"node_modules/@typescript-eslint/type-utils": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz",
"integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==",
"dev": true,
"dependencies": {
@@ -2852,7 +2851,7 @@
},
"node_modules/@typescript-eslint/types": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/types/-/types-5.20.0.tgz",
"integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==",
"dev": true,
"engines": {
@@ -2865,7 +2864,7 @@
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz",
"integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==",
"dev": true,
"dependencies": {
@@ -2892,7 +2891,7 @@
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
@@ -2907,7 +2906,7 @@
},
"node_modules/@typescript-eslint/utils": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/utils/-/utils-5.20.0.tgz",
"integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==",
"dev": true,
"dependencies": {
@@ -2931,7 +2930,7 @@
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz",
"integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==",
"dev": true,
"dependencies": {
@@ -2948,13 +2947,13 @@
},
"node_modules/@ungap/promise-all-settled": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/ast/-/ast-1.11.1.tgz",
"integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
"dev": true,
"dependencies": {
@@ -2964,25 +2963,25 @@
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
"integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
"dev": true
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
"integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
"dev": true
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
"integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
"dev": true
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
"integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
"dependencies": {
@@ -2993,13 +2992,13 @@
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
"integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
"dev": true
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
"integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
"dependencies": {
@@ -3011,7 +3010,7 @@
},
"node_modules/@webassemblyjs/ieee754": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
"integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
"dependencies": {
@@ -3020,7 +3019,7 @@
},
"node_modules/@webassemblyjs/leb128": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
"integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
"dev": true,
"dependencies": {
@@ -3029,13 +3028,13 @@
},
"node_modules/@webassemblyjs/utf8": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
"integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
"dev": true
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
"integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
"dependencies": {
@@ -3051,7 +3050,7 @@
},
"node_modules/@webassemblyjs/wasm-gen": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
"integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
"dependencies": {
@@ -3064,7 +3063,7 @@
},
"node_modules/@webassemblyjs/wasm-opt": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
"integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"dev": true,
"dependencies": {
@@ -3076,7 +3075,7 @@
},
"node_modules/@webassemblyjs/wasm-parser": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
"integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
"dev": true,
"dependencies": {
@@ -3090,7 +3089,7 @@
},
"node_modules/@webassemblyjs/wast-printer": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
"integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
"dev": true,
"dependencies": {
@@ -3100,7 +3099,7 @@
},
"node_modules/@webpack-cli/configtest": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
"integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==",
"dev": true,
"peerDependencies": {
@@ -3110,7 +3109,7 @@
},
"node_modules/@webpack-cli/info": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/info/-/info-1.4.1.tgz",
"integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==",
"dev": true,
"dependencies": {
@@ -3122,7 +3121,7 @@
},
"node_modules/@webpack-cli/serve": {
"version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/serve/-/serve-1.6.1.tgz",
"integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==",
"dev": true,
"peerDependencies": {
@@ -3136,25 +3135,19 @@
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "node_modules/abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
- "dev": true
- },
"node_modules/accepts": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"dependencies": {
"mime-types": "~2.1.34",
@@ -3166,7 +3159,7 @@
},
"node_modules/acorn": {
"version": "8.7.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn/-/acorn-8.7.0.tgz",
"integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true,
"bin": {
@@ -3178,7 +3171,7 @@
},
"node_modules/acorn-import-assertions": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true,
"peerDependencies": {
@@ -3187,7 +3180,7 @@
},
"node_modules/acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"peerDependencies": {
@@ -3196,7 +3189,7 @@
},
"node_modules/acorn-walk": {
"version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true,
"engines": {
@@ -3205,7 +3198,7 @@
},
"node_modules/agent-base": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
"dependencies": {
@@ -3217,7 +3210,7 @@
},
"node_modules/ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"dependencies": {
@@ -3233,26 +3226,16 @@
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
"peerDependencies": {
"ajv": "^6.9.1"
}
},
- "node_modules/amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.4.2"
- }
- },
"node_modules/ansi-colors": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-colors/-/ansi-colors-4.1.1.tgz",
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true,
"engines": {
@@ -3261,7 +3244,7 @@
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
@@ -3269,7 +3252,7 @@
},
"node_modules/ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dependencies": {
"color-convert": "^1.9.0"
@@ -3280,7 +3263,7 @@
},
"node_modules/anymatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dependencies": {
"normalize-path": "^3.0.0",
@@ -3292,13 +3275,13 @@
},
"node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/aria-query": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/aria-query/-/aria-query-5.0.0.tgz",
"integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==",
"dev": true,
"engines": {
@@ -3307,7 +3290,7 @@
},
"node_modules/array-includes": {
"version": "3.1.4",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array-includes/-/array-includes-3.1.4.tgz",
"integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
"dev": true,
"dependencies": {
@@ -3326,7 +3309,7 @@
},
"node_modules/array-union": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true,
"engines": {
@@ -3335,7 +3318,7 @@
},
"node_modules/array.prototype.flatmap": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
"integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
"dev": true,
"dependencies": {
@@ -3353,7 +3336,7 @@
},
"node_modules/assertion-error": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/assertion-error/-/assertion-error-1.1.0.tgz",
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true,
"engines": {
@@ -3362,19 +3345,13 @@
},
"node_modules/ast-types-flow": {
"version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
"integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
"dev": true
},
- "node_modules/async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
"node_modules/autoprefixer": {
"version": "10.4.4",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/autoprefixer/-/autoprefixer-10.4.4.tgz",
"integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==",
"dev": true,
"funding": [
@@ -3407,7 +3384,7 @@
},
"node_modules/available-typed-arrays": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true,
"engines": {
@@ -3419,7 +3396,7 @@
},
"node_modules/axe-core": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axe-core/-/axe-core-4.4.1.tgz",
"integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
"dev": true,
"engines": {
@@ -3428,13 +3405,13 @@
},
"node_modules/axobject-query": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
"dev": true
},
"node_modules/babel-eslint": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-eslint/-/babel-eslint-10.1.0.tgz",
"integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
"deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
"dev": true,
@@ -3455,7 +3432,7 @@
},
"node_modules/babel-eslint/node_modules/eslint-visitor-keys": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true,
"engines": {
@@ -3464,7 +3441,7 @@
},
"node_modules/babel-loader": {
"version": "8.2.5",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-loader/-/babel-loader-8.2.5.tgz",
"integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==",
"dev": true,
"dependencies": {
@@ -3483,7 +3460,7 @@
},
"node_modules/babel-plugin-dynamic-import-node": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
"integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
"dev": true,
"dependencies": {
@@ -3492,7 +3469,7 @@
},
"node_modules/babel-plugin-macros": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
"integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
"dependencies": {
"@babel/runtime": "^7.7.2",
@@ -3502,7 +3479,7 @@
},
"node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
"integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
"dev": true,
"dependencies": {
@@ -3516,7 +3493,7 @@
},
"node_modules/babel-plugin-polyfill-corejs3": {
"version": "0.5.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
"integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
"dev": true,
"dependencies": {
@@ -3529,7 +3506,7 @@
},
"node_modules/babel-plugin-polyfill-regenerator": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
"integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
"dev": true,
"dependencies": {
@@ -3541,12 +3518,12 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
"funding": [
@@ -3566,7 +3543,7 @@
},
"node_modules/base64id": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
"engines": {
"node": "^4.5.0 || >= 5.9"
@@ -3574,7 +3551,7 @@
},
"node_modules/big.js": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
"engines": {
@@ -3583,7 +3560,7 @@
},
"node_modules/binary-extensions": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"engines": {
"node": ">=8"
@@ -3591,7 +3568,7 @@
},
"node_modules/bl": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"dependencies": {
@@ -3602,7 +3579,7 @@
},
"node_modules/body-parser": {
"version": "1.20.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/body-parser/-/body-parser-1.20.0.tgz",
"integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
"dependencies": {
"bytes": "3.1.2",
@@ -3625,7 +3602,7 @@
},
"node_modules/body-parser/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
@@ -3633,18 +3610,18 @@
},
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"node_modules/boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
"node_modules/brace-expansion": {
"version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -3653,7 +3630,7 @@
},
"node_modules/braces": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dependencies": {
"fill-range": "^7.0.1"
@@ -3664,13 +3641,13 @@
},
"node_modules/browser-stdout": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
"node_modules/browserslist": {
"version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/browserslist/-/browserslist-4.20.2.tgz",
"integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
"funding": [
{
@@ -3698,7 +3675,7 @@
},
"node_modules/buffer": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"funding": [
@@ -3722,7 +3699,7 @@
},
"node_modules/buffer-crc32": {
"version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true,
"engines": {
@@ -3731,13 +3708,13 @@
},
"node_modules/buffer-from": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
"node_modules/bytes": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
@@ -3745,7 +3722,7 @@
},
"node_modules/call-bind": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dependencies": {
"function-bind": "^1.1.1",
@@ -3757,7 +3734,7 @@
},
"node_modules/callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"engines": {
"node": ">=6"
@@ -3765,7 +3742,7 @@
},
"node_modules/camel-case": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/camel-case/-/camel-case-4.1.2.tgz",
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
"dev": true,
"dependencies": {
@@ -3775,7 +3752,7 @@
},
"node_modules/camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
"engines": {
@@ -3787,7 +3764,7 @@
},
"node_modules/caniuse-lite": {
"version": "1.0.30001332",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz",
"integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==",
"funding": [
{
@@ -3802,7 +3779,7 @@
},
"node_modules/chai": {
"version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai/-/chai-4.3.6.tgz",
"integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
"dependencies": {
@@ -3820,7 +3797,7 @@
},
"node_modules/chai-dom": {
"version": "1.11.0",
- "resolved": "https://registry.npmjs.org/chai-dom/-/chai-dom-1.11.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai-dom/-/chai-dom-1.11.0.tgz",
"integrity": "sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg==",
"dev": true,
"engines": {
@@ -3833,7 +3810,7 @@
},
"node_modules/chai-string": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai-string/-/chai-string-1.5.0.tgz",
"integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==",
"dev": true,
"peerDependencies": {
@@ -3842,7 +3819,7 @@
},
"node_modules/chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dependencies": {
"ansi-styles": "^3.2.1",
@@ -3855,7 +3832,7 @@
},
"node_modules/chalk/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"engines": {
"node": ">=0.8.0"
@@ -3863,7 +3840,7 @@
},
"node_modules/charcodes": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/charcodes/-/charcodes-0.2.0.tgz",
"integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==",
"dev": true,
"engines": {
@@ -3872,7 +3849,7 @@
},
"node_modules/chart.js": {
"version": "2.9.4",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chart.js/-/chart.js-2.9.4.tgz",
"integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
"dependencies": {
"chartjs-color": "^2.1.0",
@@ -3881,7 +3858,7 @@
},
"node_modules/chartjs-color": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chartjs-color/-/chartjs-color-2.4.1.tgz",
"integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
"dependencies": {
"chartjs-color-string": "^0.6.0",
@@ -3890,7 +3867,7 @@
},
"node_modules/chartjs-color-string": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
"integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
"dependencies": {
"color-name": "^1.0.0"
@@ -3898,7 +3875,7 @@
},
"node_modules/check-error": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/check-error/-/check-error-1.0.2.tgz",
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
"dev": true,
"engines": {
@@ -3907,7 +3884,7 @@
},
"node_modules/chokidar": {
"version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"funding": [
{
@@ -3933,7 +3910,7 @@
},
"node_modules/chokidar/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dependencies": {
"is-glob": "^4.0.1"
@@ -3944,13 +3921,13 @@
},
"node_modules/chownr": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
"node_modules/chrome-trace-event": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
"engines": {
@@ -3959,7 +3936,7 @@
},
"node_modules/circular-dependency-plugin": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
"integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
"dev": true,
"engines": {
@@ -3971,7 +3948,7 @@
},
"node_modules/clean-css": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clean-css/-/clean-css-5.3.0.tgz",
"integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==",
"dev": true,
"dependencies": {
@@ -3983,7 +3960,7 @@
},
"node_modules/clean-css/node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
@@ -3992,7 +3969,7 @@
},
"node_modules/cliui": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dependencies": {
"string-width": "^4.2.0",
@@ -4002,7 +3979,7 @@
},
"node_modules/clone-deep": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clone-deep/-/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
"dependencies": {
@@ -4016,7 +3993,7 @@
},
"node_modules/clsx": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clsx/-/clsx-1.1.1.tgz",
"integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==",
"engines": {
"node": ">=6"
@@ -4024,7 +4001,7 @@
},
"node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dependencies": {
"color-name": "1.1.3"
@@ -4032,23 +4009,23 @@
},
"node_modules/color-convert/node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/colorette": {
"version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/colorette/-/colorette-2.0.16.tgz",
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"node_modules/commander": {
"version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-8.3.0.tgz",
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
"dev": true,
"engines": {
@@ -4057,23 +4034,23 @@
},
"node_modules/commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"node_modules/component-emitter": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/component-emitter/-/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
},
"node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"node_modules/connect": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/connect/-/connect-3.7.0.tgz",
"integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
"dependencies": {
"debug": "2.6.9",
@@ -4087,7 +4064,7 @@
},
"node_modules/connect/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
@@ -4095,12 +4072,12 @@
},
"node_modules/connect/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"node_modules/content-type": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"engines": {
"node": ">= 0.6"
@@ -4108,7 +4085,7 @@
},
"node_modules/convert-source-map": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/convert-source-map/-/convert-source-map-1.8.0.tgz",
"integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
"dependencies": {
"safe-buffer": "~5.1.1"
@@ -4116,7 +4093,7 @@
},
"node_modules/cookie": {
"version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
"engines": {
"node": ">= 0.6"
@@ -4124,7 +4101,7 @@
},
"node_modules/core-js-compat": {
"version": "3.22.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/core-js-compat/-/core-js-compat-3.22.1.tgz",
"integrity": "sha512-CWbNqTluLMvZg1cjsQUbGiCM91dobSHKfDIyCoxuqxthdjGuUlaMbCsSehP3CBiVvG0C7P6UIrC1v0hgFE75jw==",
"dev": true,
"dependencies": {
@@ -4138,7 +4115,7 @@
},
"node_modules/core-js-compat/node_modules/semver": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true,
"bin": {
@@ -4147,7 +4124,7 @@
},
"node_modules/core-js-pure": {
"version": "3.22.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/core-js-pure/-/core-js-pure-3.22.1.tgz",
"integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==",
"dev": true,
"hasInstallScript": true,
@@ -4158,7 +4135,7 @@
},
"node_modules/cors": {
"version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"dependencies": {
"object-assign": "^4",
@@ -4170,7 +4147,7 @@
},
"node_modules/cosmiconfig": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
"integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
"dependencies": {
"@types/parse-json": "^4.0.0",
@@ -4185,7 +4162,7 @@
},
"node_modules/cross-fetch": {
"version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cross-fetch/-/cross-fetch-3.1.5.tgz",
"integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
"dev": true,
"dependencies": {
@@ -4194,7 +4171,7 @@
},
"node_modules/cross-spawn": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"dependencies": {
@@ -4208,7 +4185,7 @@
},
"node_modules/css-loader": {
"version": "6.7.1",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-loader/-/css-loader-6.7.1.tgz",
"integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==",
"dev": true,
"dependencies": {
@@ -4234,7 +4211,7 @@
},
"node_modules/css-loader/node_modules/semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
@@ -4249,7 +4226,7 @@
},
"node_modules/css-select": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"dev": true,
"dependencies": {
@@ -4265,7 +4242,7 @@
},
"node_modules/css-vendor": {
"version": "2.0.8",
- "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-vendor/-/css-vendor-2.0.8.tgz",
"integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
"dependencies": {
"@babel/runtime": "^7.8.3",
@@ -4274,7 +4251,7 @@
},
"node_modules/css-what": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-what/-/css-what-6.1.0.tgz",
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true,
"engines": {
@@ -4286,7 +4263,7 @@
},
"node_modules/cssesc": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
"bin": {
@@ -4298,23 +4275,23 @@
},
"node_modules/csstype": {
"version": "3.0.11",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/csstype/-/csstype-3.0.11.tgz",
"integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
},
"node_modules/custom-event": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/custom-event/-/custom-event-1.0.1.tgz",
"integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU="
},
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
"node_modules/date-format": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/date-format/-/date-format-4.0.7.tgz",
"integrity": "sha512-k5xqlzDGIfv2N/DHR/BR8Kc4N9CRy9ReuDkmdxeX/jNfit94QXd36emWMm40ZOEDKNm/c91yV9EO3uGPkR7wWQ==",
"engines": {
"node": ">=4.0"
@@ -4322,12 +4299,12 @@
},
"node_modules/debounce": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debounce/-/debounce-1.2.1.tgz",
"integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
},
"node_modules/debug": {
"version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"ms": "2.1.2"
@@ -4343,7 +4320,7 @@
},
"node_modules/decamelize": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/decamelize/-/decamelize-4.0.0.tgz",
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
"engines": {
@@ -4355,7 +4332,7 @@
},
"node_modules/deep-eql": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-eql/-/deep-eql-3.0.1.tgz",
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
"dev": true,
"dependencies": {
@@ -4367,7 +4344,7 @@
},
"node_modules/deep-equal": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-equal/-/deep-equal-2.0.5.tgz",
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
"dev": true,
"dependencies": {
@@ -4393,13 +4370,13 @@
},
"node_modules/deep-is": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"node_modules/define-properties": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/define-properties/-/define-properties-1.1.4.tgz",
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"dependencies": {
@@ -4415,7 +4392,7 @@
},
"node_modules/depd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": {
"node": ">= 0.8"
@@ -4423,7 +4400,7 @@
},
"node_modules/destroy": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"engines": {
"node": ">= 0.8",
@@ -4432,18 +4409,18 @@
},
"node_modules/devtools-protocol": {
"version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
"integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
"dev": true
},
"node_modules/di": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/di/-/di-0.0.1.tgz",
"integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw="
},
"node_modules/diff": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/diff/-/diff-5.0.0.tgz",
"integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"engines": {
"node": ">=0.3.1"
@@ -4451,7 +4428,7 @@
},
"node_modules/dir-glob": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dir-glob/-/dir-glob-3.0.1.tgz",
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
"dependencies": {
@@ -4463,7 +4440,7 @@
},
"node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"dependencies": {
@@ -4475,13 +4452,13 @@
},
"node_modules/dom-accessibility-api": {
"version": "0.5.13",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz",
"integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==",
"dev": true
},
"node_modules/dom-converter": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-converter/-/dom-converter-0.2.0.tgz",
"integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
"dependencies": {
@@ -4490,7 +4467,7 @@
},
"node_modules/dom-helpers": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"dependencies": {
"@babel/runtime": "^7.8.7",
@@ -4499,7 +4476,7 @@
},
"node_modules/dom-serialize": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-serialize/-/dom-serialize-2.2.1.tgz",
"integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
"dependencies": {
"custom-event": "~1.0.0",
@@ -4510,7 +4487,7 @@
},
"node_modules/dom-serializer": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"dev": true,
"dependencies": {
@@ -4524,7 +4501,7 @@
},
"node_modules/domelementtype": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"dev": true,
"funding": [
@@ -4536,7 +4513,7 @@
},
"node_modules/domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"dev": true,
"dependencies": {
@@ -4551,12 +4528,12 @@
},
"node_modules/dompurify": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dompurify/-/dompurify-2.3.6.tgz",
"integrity": "sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg=="
},
"node_modules/domutils": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"dev": true,
"dependencies": {
@@ -4570,7 +4547,7 @@
},
"node_modules/dot-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dot-case/-/dot-case-3.0.4.tgz",
"integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
"dev": true,
"dependencies": {
@@ -4580,29 +4557,29 @@
},
"node_modules/duplexer": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
"node_modules/ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"node_modules/electron-to-chromium": {
"version": "1.4.115",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.115.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/electron-to-chromium/-/electron-to-chromium-1.4.115.tgz",
"integrity": "sha512-yy1W7cTcreskCWSRTtvp8CNLEci3uYBn5s1U4IytDz7v485iLVPh4QwFuSCavsFbxRLVvwnHNXEFIDShrk/UnQ=="
},
"node_modules/emoji-regex": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"node_modules/emojis-list": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
"engines": {
@@ -4611,7 +4588,7 @@
},
"node_modules/encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"engines": {
"node": ">= 0.8"
@@ -4619,7 +4596,7 @@
},
"node_modules/end-of-stream": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"dependencies": {
@@ -4628,7 +4605,7 @@
},
"node_modules/engine.io": {
"version": "6.1.3",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/engine.io/-/engine.io-6.1.3.tgz",
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==",
"dependencies": {
"@types/cookie": "^0.4.1",
@@ -4648,7 +4625,7 @@
},
"node_modules/engine.io-parser": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==",
"dependencies": {
"@socket.io/base64-arraybuffer": "~1.0.2"
@@ -4659,7 +4636,7 @@
},
"node_modules/engine.io/node_modules/ws": {
"version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"engines": {
"node": ">=10.0.0"
@@ -4679,7 +4656,7 @@
},
"node_modules/enhanced-resolve": {
"version": "5.9.3",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
"integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
"dev": true,
"dependencies": {
@@ -4692,12 +4669,12 @@
},
"node_modules/ent": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ent/-/ent-2.2.0.tgz",
"integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
},
"node_modules/entities": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"dev": true,
"funding": {
@@ -4706,7 +4683,7 @@
},
"node_modules/envinfo": {
"version": "7.8.1",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/envinfo/-/envinfo-7.8.1.tgz",
"integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
"dev": true,
"bin": {
@@ -4718,7 +4695,7 @@
},
"node_modules/error-ex": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dependencies": {
"is-arrayish": "^0.2.1"
@@ -4726,7 +4703,7 @@
},
"node_modules/es-abstract": {
"version": "1.19.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-abstract/-/es-abstract-1.19.5.tgz",
"integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==",
"dev": true,
"dependencies": {
@@ -4760,7 +4737,7 @@
},
"node_modules/es-get-iterator": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
"integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
"dev": true,
"dependencies": {
@@ -4779,13 +4756,13 @@
},
"node_modules/es-module-lexer": {
"version": "0.9.3",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
"dev": true
},
"node_modules/es-shim-unscopables": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
"integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
"dev": true,
"dependencies": {
@@ -4794,7 +4771,7 @@
},
"node_modules/es-to-primitive": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"dependencies": {
@@ -4811,7 +4788,7 @@
},
"node_modules/escalade": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"engines": {
"node": ">=6"
@@ -4819,12 +4796,12 @@
},
"node_modules/escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"engines": {
"node": ">=10"
@@ -4833,104 +4810,9 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/escodegen": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
- "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
- "dev": true,
- "dependencies": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=0.12.0"
- },
- "optionalDependencies": {
- "source-map": "~0.2.0"
- }
- },
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/source-map": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "dependencies": {
- "amdefine": ">=0.0.4"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint": {
"version": "8.13.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint/-/eslint-8.13.0.tgz",
"integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==",
"dev": true,
"dependencies": {
@@ -4982,7 +4864,7 @@
},
"node_modules/eslint-config-google": {
"version": "0.14.0",
- "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
"integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
"dev": true,
"engines": {
@@ -4994,7 +4876,7 @@
},
"node_modules/eslint-config-prettier": {
"version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
"dev": true,
"bin": {
@@ -5006,7 +4888,7 @@
},
"node_modules/eslint-plugin-css-modules": {
"version": "2.11.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-css-modules/-/eslint-plugin-css-modules-2.11.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-css-modules/-/eslint-plugin-css-modules-2.11.0.tgz",
"integrity": "sha512-CLvQvJOMlCywZzaI4HVu7QH/ltgNXvCg7giJGiE+sA9wh5zQ+AqTgftAzrERV22wHe1p688wrU/Zwxt1Ry922w==",
"dev": true,
"dependencies": {
@@ -5022,7 +4904,7 @@
},
"node_modules/eslint-plugin-jsx-a11y": {
"version": "6.5.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
"integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
"dev": true,
"dependencies": {
@@ -5048,7 +4930,7 @@
},
"node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
"dev": true,
"dependencies": {
@@ -5061,7 +4943,7 @@
},
"node_modules/eslint-plugin-react": {
"version": "7.29.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
"integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
"dev": true,
"dependencies": {
@@ -5089,7 +4971,7 @@
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"dependencies": {
@@ -5101,7 +4983,7 @@
},
"node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve/-/resolve-2.0.0-next.3.tgz",
"integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
"dev": true,
"dependencies": {
@@ -5114,7 +4996,7 @@
},
"node_modules/eslint-scope": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"dependencies": {
@@ -5127,7 +5009,7 @@
},
"node_modules/eslint-scope/node_modules/estraverse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"engines": {
@@ -5136,7 +5018,7 @@
},
"node_modules/eslint-utils": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-utils/-/eslint-utils-3.0.0.tgz",
"integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
"dependencies": {
@@ -5154,7 +5036,7 @@
},
"node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
"engines": {
@@ -5163,7 +5045,7 @@
},
"node_modules/eslint-visitor-keys": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true,
"engines": {
@@ -5172,7 +5054,7 @@
},
"node_modules/eslint/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
@@ -5187,7 +5069,7 @@
},
"node_modules/eslint/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
@@ -5203,7 +5085,7 @@
},
"node_modules/eslint/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
@@ -5215,7 +5097,7 @@
},
"node_modules/eslint/node_modules/eslint-scope": {
"version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-scope/-/eslint-scope-7.1.1.tgz",
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"dependencies": {
@@ -5228,7 +5110,7 @@
},
"node_modules/eslint/node_modules/globals": {
"version": "13.13.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-13.13.0.tgz",
"integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"dependencies": {
@@ -5243,7 +5125,7 @@
},
"node_modules/eslint/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -5252,7 +5134,7 @@
},
"node_modules/eslint/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -5264,7 +5146,7 @@
},
"node_modules/espree": {
"version": "9.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/espree/-/espree-9.3.1.tgz",
"integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
"dependencies": {
@@ -5276,22 +5158,9 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/esquery": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esquery/-/esquery-1.4.0.tgz",
"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
"dev": true,
"dependencies": {
@@ -5303,7 +5172,7 @@
},
"node_modules/esrecurse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"dependencies": {
@@ -5315,7 +5184,7 @@
},
"node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
"engines": {
@@ -5324,7 +5193,7 @@
},
"node_modules/esutils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
"engines": {
@@ -5333,12 +5202,12 @@
},
"node_modules/eventemitter3": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
"node_modules/events": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
"engines": {
@@ -5347,7 +5216,7 @@
},
"node_modules/execa": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/execa/-/execa-5.1.1.tgz",
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
"dependencies": {
@@ -5370,7 +5239,7 @@
},
"node_modules/execa/node_modules/get-stream": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
"engines": {
@@ -5382,12 +5251,12 @@
},
"node_modules/extend": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/extract-zip": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
"dependencies": {
@@ -5407,13 +5276,13 @@
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"node_modules/fast-glob": {
"version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-glob/-/fast-glob-3.2.11.tgz",
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
"dev": true,
"dependencies": {
@@ -5429,7 +5298,7 @@
},
"node_modules/fast-glob/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
@@ -5441,25 +5310,25 @@
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"node_modules/fastest-levenshtein": {
"version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
"integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
"dev": true
},
"node_modules/fastq": {
"version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fastq/-/fastq-1.13.0.tgz",
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
"dev": true,
"dependencies": {
@@ -5468,7 +5337,7 @@
},
"node_modules/fd-slicer": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
"dependencies": {
@@ -5477,7 +5346,7 @@
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
"dependencies": {
@@ -5489,7 +5358,7 @@
},
"node_modules/fill-range": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -5500,7 +5369,7 @@
},
"node_modules/finalhandler": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"dependencies": {
"debug": "2.6.9",
@@ -5517,7 +5386,7 @@
},
"node_modules/finalhandler/node_modules/debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
@@ -5525,12 +5394,12 @@
},
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"node_modules/finalhandler/node_modules/on-finished": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"dependencies": {
"ee-first": "1.1.1"
@@ -5541,7 +5410,7 @@
},
"node_modules/find-cache-dir": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
"integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
"dev": true,
"dependencies": {
@@ -5558,12 +5427,12 @@
},
"node_modules/find-root": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-root/-/find-root-1.1.0.tgz",
"integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
},
"node_modules/find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
@@ -5579,7 +5448,7 @@
},
"node_modules/flat": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
"bin": {
@@ -5588,7 +5457,7 @@
},
"node_modules/flat-cache": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flat-cache/-/flat-cache-3.0.4.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"dev": true,
"dependencies": {
@@ -5601,12 +5470,12 @@
},
"node_modules/flatted": {
"version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flatted/-/flatted-3.2.5.tgz",
"integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
},
"node_modules/follow-redirects": {
"version": "1.14.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/follow-redirects/-/follow-redirects-1.14.9.tgz",
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
"funding": [
{
@@ -5625,13 +5494,13 @@
},
"node_modules/foreach": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/foreach/-/foreach-2.0.5.tgz",
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
"dev": true
},
"node_modules/fraction.js": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
"dev": true,
"engines": {
@@ -5644,13 +5513,13 @@
},
"node_modules/fs-constants": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
"node_modules/fs-extra": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -5663,12 +5532,12 @@
},
"node_modules/fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"node_modules/fsevents": {
"version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
@@ -5681,18 +5550,18 @@
},
"node_modules/function-bind": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
"node_modules/functions-have-names": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
"funding": {
@@ -5701,7 +5570,7 @@
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"engines": {
"node": ">=6.9.0"
@@ -5709,7 +5578,7 @@
},
"node_modules/get-caller-file": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"engines": {
"node": "6.* || 8.* || >= 10.*"
@@ -5717,7 +5586,7 @@
},
"node_modules/get-func-name": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-func-name/-/get-func-name-2.0.0.tgz",
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true,
"engines": {
@@ -5726,7 +5595,7 @@
},
"node_modules/get-intrinsic": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dependencies": {
"function-bind": "^1.1.1",
@@ -5739,7 +5608,7 @@
},
"node_modules/get-stream": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"dependencies": {
@@ -5754,7 +5623,7 @@
},
"node_modules/get-symbol-description": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"dev": true,
"dependencies": {
@@ -5770,7 +5639,7 @@
},
"node_modules/glob": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -5789,7 +5658,7 @@
},
"node_modules/glob-parent": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"dependencies": {
@@ -5801,13 +5670,13 @@
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
"node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"engines": {
"node": ">=4"
@@ -5815,7 +5684,7 @@
},
"node_modules/globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globby/-/globby-11.1.0.tgz",
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
"dependencies": {
@@ -5835,7 +5704,7 @@
},
"node_modules/gonzales-pe": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
"integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
"dev": true,
"dependencies": {
@@ -5850,12 +5719,12 @@
},
"node_modules/graceful-fs": {
"version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"node_modules/growl": {
"version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/growl/-/growl-1.10.5.tgz",
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true,
"engines": {
@@ -5864,7 +5733,7 @@
},
"node_modules/gzip-size": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gzip-size/-/gzip-size-6.0.0.tgz",
"integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
"dependencies": {
@@ -5877,39 +5746,9 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
- },
- "engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
- }
- },
- "node_modules/handlebars/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/has": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dependencies": {
"function-bind": "^1.1.1"
@@ -5920,7 +5759,7 @@
},
"node_modules/has-bigints": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-bigints/-/has-bigints-1.0.2.tgz",
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
"funding": {
@@ -5929,7 +5768,7 @@
},
"node_modules/has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"engines": {
"node": ">=4"
@@ -5937,7 +5776,7 @@
},
"node_modules/has-property-descriptors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
"dev": true,
"dependencies": {
@@ -5949,7 +5788,7 @@
},
"node_modules/has-symbols": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
@@ -5960,7 +5799,7 @@
},
"node_modules/has-tostringtag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dev": true,
"dependencies": {
@@ -5975,7 +5814,7 @@
},
"node_modules/he": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
@@ -5984,7 +5823,7 @@
},
"node_modules/hoist-non-react-statics": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"dependencies": {
"react-is": "^16.7.0"
@@ -5992,18 +5831,18 @@
},
"node_modules/hoist-non-react-statics/node_modules/react-is": {
"version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/html-escaper": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-escaper/-/html-escaper-2.0.2.tgz",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
"node_modules/html-minifier-terser": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
"dev": true,
"dependencies": {
@@ -6024,7 +5863,7 @@
},
"node_modules/html-webpack-plugin": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
"integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==",
"dev": true,
"dependencies": {
@@ -6047,7 +5886,7 @@
},
"node_modules/htmlparser2": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/htmlparser2/-/htmlparser2-6.1.0.tgz",
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"dev": true,
"funding": [
@@ -6066,7 +5905,7 @@
},
"node_modules/http-errors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
"depd": "2.0.0",
@@ -6081,7 +5920,7 @@
},
"node_modules/http-errors/node_modules/statuses": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": {
"node": ">= 0.8"
@@ -6089,7 +5928,7 @@
},
"node_modules/http-proxy": {
"version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"dependencies": {
"eventemitter3": "^4.0.0",
@@ -6102,7 +5941,7 @@
},
"node_modules/https-proxy-agent": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"dev": true,
"dependencies": {
@@ -6115,7 +5954,7 @@
},
"node_modules/human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
"engines": {
@@ -6124,12 +5963,12 @@
},
"node_modules/hyphenate-style-name": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
},
"node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
@@ -6140,7 +5979,7 @@
},
"node_modules/icss-utils": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"dev": true,
"engines": {
@@ -6152,7 +5991,7 @@
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true,
"funding": [
@@ -6172,7 +6011,7 @@
},
"node_modules/ignore": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ignore/-/ignore-5.2.0.tgz",
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true,
"engines": {
@@ -6181,7 +6020,7 @@
},
"node_modules/import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dependencies": {
"parent-module": "^1.0.0",
@@ -6196,7 +6035,7 @@
},
"node_modules/import-local": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/import-local/-/import-local-3.1.0.tgz",
"integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
"dev": true,
"dependencies": {
@@ -6215,7 +6054,7 @@
},
"node_modules/imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true,
"engines": {
@@ -6224,7 +6063,7 @@
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dependencies": {
"once": "^1.3.0",
@@ -6233,12 +6072,12 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/internal-slot": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/internal-slot/-/internal-slot-1.0.3.tgz",
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
"dev": true,
"dependencies": {
@@ -6252,7 +6091,7 @@
},
"node_modules/interpret": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true,
"engines": {
@@ -6261,7 +6100,7 @@
},
"node_modules/is-arguments": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"dev": true,
"dependencies": {
@@ -6277,12 +6116,12 @@
},
"node_modules/is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
"node_modules/is-bigint": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-bigint/-/is-bigint-1.0.4.tgz",
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
"dependencies": {
@@ -6294,7 +6133,7 @@
},
"node_modules/is-binary-path": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dependencies": {
"binary-extensions": "^2.0.0"
@@ -6305,7 +6144,7 @@
},
"node_modules/is-boolean-object": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
"dependencies": {
@@ -6321,7 +6160,7 @@
},
"node_modules/is-callable": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
"dev": true,
"engines": {
@@ -6333,7 +6172,7 @@
},
"node_modules/is-core-module": {
"version": "2.9.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-core-module/-/is-core-module-2.9.0.tgz",
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
"dependencies": {
"has": "^1.0.3"
@@ -6344,7 +6183,7 @@
},
"node_modules/is-date-object": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
"dependencies": {
@@ -6359,7 +6198,7 @@
},
"node_modules/is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"engines": {
"node": ">=0.10.0"
@@ -6367,7 +6206,7 @@
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"engines": {
"node": ">=8"
@@ -6375,7 +6214,7 @@
},
"node_modules/is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dependencies": {
"is-extglob": "^2.1.1"
@@ -6386,12 +6225,12 @@
},
"node_modules/is-in-browser": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-in-browser/-/is-in-browser-1.1.3.tgz",
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
},
"node_modules/is-map": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-map/-/is-map-2.0.2.tgz",
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
"dev": true,
"funding": {
@@ -6400,7 +6239,7 @@
},
"node_modules/is-negative-zero": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true,
"engines": {
@@ -6412,7 +6251,7 @@
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"engines": {
"node": ">=0.12.0"
@@ -6420,7 +6259,7 @@
},
"node_modules/is-number-object": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-number-object/-/is-number-object-1.0.7.tgz",
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"dependencies": {
@@ -6435,7 +6274,7 @@
},
"node_modules/is-plain-obj": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
"integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true,
"engines": {
@@ -6444,7 +6283,7 @@
},
"node_modules/is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
"dependencies": {
@@ -6456,7 +6295,7 @@
},
"node_modules/is-regex": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"dependencies": {
@@ -6472,7 +6311,7 @@
},
"node_modules/is-set": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-set/-/is-set-2.0.2.tgz",
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
"dev": true,
"funding": {
@@ -6481,7 +6320,7 @@
},
"node_modules/is-shared-array-buffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
"dev": true,
"dependencies": {
@@ -6493,7 +6332,7 @@
},
"node_modules/is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
"engines": {
@@ -6505,7 +6344,7 @@
},
"node_modules/is-string": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"dependencies": {
@@ -6520,7 +6359,7 @@
},
"node_modules/is-symbol": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
"dependencies": {
@@ -6535,7 +6374,7 @@
},
"node_modules/is-typed-array": {
"version": "1.1.8",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-typed-array/-/is-typed-array-1.1.8.tgz",
"integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
"dev": true,
"dependencies": {
@@ -6554,7 +6393,7 @@
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
"engines": {
@@ -6566,7 +6405,7 @@
},
"node_modules/is-weakmap": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakmap/-/is-weakmap-2.0.1.tgz",
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
"dev": true,
"funding": {
@@ -6575,7 +6414,7 @@
},
"node_modules/is-weakref": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
"dependencies": {
@@ -6587,7 +6426,7 @@
},
"node_modules/is-weakset": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakset/-/is-weakset-2.0.2.tgz",
"integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
"dev": true,
"dependencies": {
@@ -6600,13 +6439,13 @@
},
"node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true
},
"node_modules/isbinaryfile": {
"version": "4.0.10",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
"integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
"engines": {
"node": ">= 8.0.0"
@@ -6617,48 +6456,22 @@
},
"node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"node_modules/isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/istanbul": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
- "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
- "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.",
- "dev": true,
- "dependencies": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "istanbul": "lib/cli.js"
- }
- },
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
"integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true,
"engines": {
@@ -6667,7 +6480,7 @@
},
"node_modules/istanbul-lib-instrument": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
"integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==",
"dev": true,
"dependencies": {
@@ -6683,7 +6496,7 @@
},
"node_modules/istanbul-lib-report": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
"integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
"dev": true,
"dependencies": {
@@ -6697,7 +6510,7 @@
},
"node_modules/istanbul-lib-report/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -6706,7 +6519,7 @@
},
"node_modules/istanbul-lib-report/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -6718,7 +6531,7 @@
},
"node_modules/istanbul-lib-source-maps": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
"integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
"dependencies": {
@@ -6732,7 +6545,7 @@
},
"node_modules/istanbul-lib-source-maps/node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
@@ -6741,7 +6554,7 @@
},
"node_modules/istanbul-reports": {
"version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
"integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
"dev": true,
"dependencies": {
@@ -6752,99 +6565,9 @@
"node": ">=8"
}
},
- "node_modules/istanbul/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/istanbul/node_modules/glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "dependencies": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/istanbul/node_modules/has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istanbul/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/istanbul/node_modules/js-yaml/node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/istanbul/node_modules/resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "node_modules/istanbul/node_modules/supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "dependencies": {
- "has-flag": "^1.0.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/istanbul/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
"node_modules/jest-worker": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"dependencies": {
@@ -6858,7 +6581,7 @@
},
"node_modules/jest-worker/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -6867,7 +6590,7 @@
},
"node_modules/jest-worker/node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
@@ -6882,12 +6605,12 @@
},
"node_modules/js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
@@ -6899,7 +6622,7 @@
},
"node_modules/jsesc": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"bin": {
"jsesc": "bin/jsesc"
@@ -6910,30 +6633,30 @@
},
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
"node_modules/json5": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json5/-/json5-2.2.1.tgz",
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
"bin": {
"json5": "lib/cli.js"
@@ -6944,7 +6667,7 @@
},
"node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
"universalify": "^2.0.0"
@@ -6955,7 +6678,7 @@
},
"node_modules/jss": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss/-/jss-10.9.0.tgz",
"integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -6970,7 +6693,7 @@
},
"node_modules/jss-plugin-camel-case": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
"integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -6980,7 +6703,7 @@
},
"node_modules/jss-plugin-default-unit": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
"integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -6989,7 +6712,7 @@
},
"node_modules/jss-plugin-global": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
"integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -6998,7 +6721,7 @@
},
"node_modules/jss-plugin-nested": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
"integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -7008,7 +6731,7 @@
},
"node_modules/jss-plugin-props-sort": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
"integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -7017,7 +6740,7 @@
},
"node_modules/jss-plugin-rule-value-function": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
"integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -7027,7 +6750,7 @@
},
"node_modules/jss-plugin-vendor-prefixer": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
"integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==",
"dependencies": {
"@babel/runtime": "^7.3.1",
@@ -7037,7 +6760,7 @@
},
"node_modules/jsx-ast-utils": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
"integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==",
"dev": true,
"dependencies": {
@@ -7050,13 +6773,13 @@
},
"node_modules/just-extend": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/just-extend/-/just-extend-4.2.1.tgz",
"integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
"node_modules/karma": {
"version": "6.3.19",
- "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.19.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma/-/karma-6.3.19.tgz",
"integrity": "sha512-NDhWckzES/Y9xMiddyU1RzaKL76/scCsu8Mp0vR0Z3lQRvC3p72+Ab4ppoxs36S9tyPNX5V48yvaV++RNEBPZw==",
"dependencies": {
"@colors/colors": "1.5.0",
@@ -7093,7 +6816,7 @@
},
"node_modules/karma-chrome-launcher": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz",
"integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==",
"dev": true,
"dependencies": {
@@ -7102,7 +6825,7 @@
},
"node_modules/karma-chrome-launcher/node_modules/which": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"dependencies": {
@@ -7114,7 +6837,7 @@
},
"node_modules/karma-coverage": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-coverage/-/karma-coverage-2.2.0.tgz",
"integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==",
"dev": true,
"dependencies": {
@@ -7131,7 +6854,7 @@
},
"node_modules/karma-mocha": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-mocha/-/karma-mocha-2.0.1.tgz",
"integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==",
"dev": true,
"dependencies": {
@@ -7140,7 +6863,7 @@
},
"node_modules/karma-mocha-reporter": {
"version": "2.2.5",
- "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
"integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=",
"dev": true,
"dependencies": {
@@ -7154,7 +6877,7 @@
},
"node_modules/karma-mocha-reporter/node_modules/ansi-regex": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-regex/-/ansi-regex-3.0.1.tgz",
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true,
"engines": {
@@ -7163,7 +6886,7 @@
},
"node_modules/karma-mocha-reporter/node_modules/strip-ansi": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"dependencies": {
@@ -7173,25 +6896,9 @@
"node": ">=4"
}
},
- "node_modules/karma-parallel": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/karma-parallel/-/karma-parallel-0.3.1.tgz",
- "integrity": "sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw==",
- "dev": true,
- "dependencies": {
- "istanbul": "^0.4.5",
- "lodash": "^4.17.11"
- },
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "karma": ">= 1.0.0"
- }
- },
"node_modules/karma-sinon": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-sinon/-/karma-sinon-1.0.5.tgz",
"integrity": "sha1-TjRD8oMP3s/2JNN0cWPxIX2qKpo=",
"dev": true,
"engines": {
@@ -7204,7 +6911,7 @@
},
"node_modules/karma-sourcemap-loader": {
"version": "0.3.8",
- "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz",
"integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==",
"dev": true,
"dependencies": {
@@ -7213,7 +6920,7 @@
},
"node_modules/karma-webpack": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-webpack/-/karma-webpack-5.0.0.tgz",
"integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==",
"dev": true,
"dependencies": {
@@ -7230,7 +6937,7 @@
},
"node_modules/karma/node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
"node": ">=0.10.0"
@@ -7238,7 +6945,7 @@
},
"node_modules/kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
"engines": {
@@ -7247,7 +6954,7 @@
},
"node_modules/klona": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/klona/-/klona-2.0.5.tgz",
"integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
"dev": true,
"engines": {
@@ -7256,13 +6963,13 @@
},
"node_modules/language-subtag-registry": {
"version": "0.3.21",
- "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
"integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==",
"dev": true
},
"node_modules/language-tags": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/language-tags/-/language-tags-1.0.5.tgz",
"integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=",
"dev": true,
"dependencies": {
@@ -7271,7 +6978,7 @@
},
"node_modules/levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"dependencies": {
@@ -7284,12 +6991,12 @@
},
"node_modules/lines-and-columns": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"node_modules/lit-element": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lit-element/-/lit-element-2.5.1.tgz",
"integrity": "sha512-ogu7PiJTA33bEK0xGu1dmaX5vhcRjBXCFexPja0e7P7jqLhTpNKYRPmE+GmiCaRVAbiQKGkUgkh/i6+bh++dPQ==",
"dependencies": {
"lit-html": "^1.1.1"
@@ -7297,12 +7004,12 @@
},
"node_modules/lit-html": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lit-html/-/lit-html-1.4.1.tgz",
"integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA=="
},
"node_modules/loader-runner": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loader-runner/-/loader-runner-4.3.0.tgz",
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
"engines": {
@@ -7311,7 +7018,7 @@
},
"node_modules/loader-utils": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"dev": true,
"dependencies": {
@@ -7325,7 +7032,7 @@
},
"node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
@@ -7340,30 +7047,30 @@
},
"node_modules/lodash": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
"node_modules/lodash.get": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
"node_modules/lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
"node_modules/log-symbols": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log-symbols/-/log-symbols-2.2.0.tgz",
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dev": true,
"dependencies": {
@@ -7375,7 +7082,7 @@
},
"node_modules/log4js": {
"version": "6.4.5",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log4js/-/log4js-6.4.5.tgz",
"integrity": "sha512-43RJcYZ7nfUxpPO2woTl8CJ0t5+gucLJZ43mtp2PlInT+LygCp/bl6hNJtKulCJ+++fQsjIv4EO3Mp611PfeLQ==",
"dependencies": {
"date-format": "^4.0.7",
@@ -7390,7 +7097,7 @@
},
"node_modules/loose-envify": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -7401,7 +7108,7 @@
},
"node_modules/loupe": {
"version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loupe/-/loupe-2.3.4.tgz",
"integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
"dev": true,
"dependencies": {
@@ -7410,7 +7117,7 @@
},
"node_modules/lower-case": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lower-case/-/lower-case-2.0.2.tgz",
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
"dev": true,
"dependencies": {
@@ -7419,7 +7126,7 @@
},
"node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
@@ -7431,7 +7138,7 @@
},
"node_modules/lz-string": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lz-string/-/lz-string-1.4.4.tgz",
"integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=",
"dev": true,
"bin": {
@@ -7440,7 +7147,7 @@
},
"node_modules/make-dir": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"dependencies": {
@@ -7455,7 +7162,7 @@
},
"node_modules/marked": {
"version": "4.0.14",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.14.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/marked/-/marked-4.0.14.tgz",
"integrity": "sha512-HL5sSPE/LP6U9qKgngIIPTthuxC0jrfxpYMZ3LdGDD3vTnLs59m2Z7r6+LNDR3ToqEQdkKd6YaaEfJhodJmijQ==",
"bin": {
"marked": "bin/marked.js"
@@ -7466,7 +7173,7 @@
},
"node_modules/media-typer": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"engines": {
"node": ">= 0.6"
@@ -7474,13 +7181,13 @@
},
"node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
"node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"engines": {
@@ -7489,7 +7196,7 @@
},
"node_modules/micromatch": {
"version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"dependencies": {
@@ -7502,7 +7209,7 @@
},
"node_modules/mime": {
"version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
"bin": {
"mime": "cli.js"
@@ -7513,7 +7220,7 @@
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
@@ -7521,7 +7228,7 @@
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
@@ -7532,7 +7239,7 @@
},
"node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
"engines": {
@@ -7541,7 +7248,7 @@
},
"node_modules/minimatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -7552,12 +7259,12 @@
},
"node_modules/minimist": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"node_modules/mkdirp": {
"version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dependencies": {
"minimist": "^1.2.6"
@@ -7568,13 +7275,13 @@
},
"node_modules/mkdirp-classic": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
"node_modules/mocha": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mocha/-/mocha-9.2.2.tgz",
"integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
"dev": true,
"dependencies": {
@@ -7617,7 +7324,7 @@
},
"node_modules/mocha/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
@@ -7632,7 +7339,7 @@
},
"node_modules/mocha/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
@@ -7648,7 +7355,7 @@
},
"node_modules/mocha/node_modules/chalk/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -7660,7 +7367,7 @@
},
"node_modules/mocha/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
@@ -7672,7 +7379,7 @@
},
"node_modules/mocha/node_modules/debug": {
"version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-4.3.3.tgz",
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"dependencies": {
@@ -7689,13 +7396,13 @@
},
"node_modules/mocha/node_modules/debug/node_modules/ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/mocha/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -7704,7 +7411,7 @@
},
"node_modules/mocha/node_modules/log-symbols": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
"dependencies": {
@@ -7720,7 +7427,7 @@
},
"node_modules/mocha/node_modules/minimatch": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimatch/-/minimatch-4.2.1.tgz",
"integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
"dev": true,
"dependencies": {
@@ -7732,13 +7439,13 @@
},
"node_modules/mocha/node_modules/ms": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
@@ -7753,7 +7460,7 @@
},
"node_modules/moment": {
"version": "2.29.3",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/moment/-/moment-2.29.3.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==",
"engines": {
"node": "*"
@@ -7761,12 +7468,12 @@
},
"node_modules/mousetrap": {
"version": "1.6.5",
- "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mousetrap/-/mousetrap-1.6.5.tgz",
"integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA=="
},
"node_modules/mrmime": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mrmime/-/mrmime-1.0.0.tgz",
"integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==",
"dev": true,
"engines": {
@@ -7775,12 +7482,12 @@
},
"node_modules/ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/nanoid": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nanoid/-/nanoid-3.3.1.tgz",
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true,
"bin": {
@@ -7792,13 +7499,13 @@
},
"node_modules/natural-compare": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"node_modules/negotiator": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
"node": ">= 0.6"
@@ -7806,13 +7513,13 @@
},
"node_modules/neo-async": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"node_modules/nise": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nise/-/nise-5.1.1.tgz",
"integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
"dev": true,
"dependencies": {
@@ -7825,13 +7532,13 @@
},
"node_modules/nise/node_modules/isarray": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"node_modules/nise/node_modules/path-to-regexp": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true,
"dependencies": {
@@ -7840,7 +7547,7 @@
},
"node_modules/no-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/no-case/-/no-case-3.0.4.tgz",
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
"dev": true,
"dependencies": {
@@ -7850,7 +7557,7 @@
},
"node_modules/node-fetch": {
"version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dev": true,
"dependencies": {
@@ -7870,24 +7577,12 @@
},
"node_modules/node-releases": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/node-releases/-/node-releases-2.0.3.tgz",
"integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
},
- "node_modules/nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
"node_modules/normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"engines": {
"node": ">=0.10.0"
@@ -7895,7 +7590,7 @@
},
"node_modules/normalize-range": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/normalize-range/-/normalize-range-0.1.2.tgz",
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
"dev": true,
"engines": {
@@ -7904,7 +7599,7 @@
},
"node_modules/npm-run-path": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"dependencies": {
@@ -7916,7 +7611,7 @@
},
"node_modules/nth-check": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nth-check/-/nth-check-2.0.1.tgz",
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"dependencies": {
@@ -7928,7 +7623,7 @@
},
"node_modules/object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"engines": {
"node": ">=0.10.0"
@@ -7936,7 +7631,7 @@
},
"node_modules/object-inspect": {
"version": "1.12.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7944,7 +7639,7 @@
},
"node_modules/object-is": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-is/-/object-is-1.1.5.tgz",
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dev": true,
"dependencies": {
@@ -7960,7 +7655,7 @@
},
"node_modules/object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
"engines": {
@@ -7969,7 +7664,7 @@
},
"node_modules/object.assign": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.assign/-/object.assign-4.1.2.tgz",
"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
"dev": true,
"dependencies": {
@@ -7987,7 +7682,7 @@
},
"node_modules/object.entries": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.entries/-/object.entries-1.1.5.tgz",
"integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"dependencies": {
@@ -8001,7 +7696,7 @@
},
"node_modules/object.fromentries": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.fromentries/-/object.fromentries-2.0.5.tgz",
"integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
"dev": true,
"dependencies": {
@@ -8018,7 +7713,7 @@
},
"node_modules/object.hasown": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.hasown/-/object.hasown-1.1.0.tgz",
"integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
"dev": true,
"dependencies": {
@@ -8031,7 +7726,7 @@
},
"node_modules/object.values": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.values/-/object.values-1.1.5.tgz",
"integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
"dev": true,
"dependencies": {
@@ -8048,7 +7743,7 @@
},
"node_modules/on-finished": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dependencies": {
"ee-first": "1.1.1"
@@ -8059,7 +7754,7 @@
},
"node_modules/once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dependencies": {
"wrappy": "1"
@@ -8067,7 +7762,7 @@
},
"node_modules/onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"dependencies": {
@@ -8082,7 +7777,7 @@
},
"node_modules/opener": {
"version": "1.5.2",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
"bin": {
@@ -8091,7 +7786,7 @@
},
"node_modules/optionator": {
"version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/optionator/-/optionator-0.9.1.tgz",
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"dev": true,
"dependencies": {
@@ -8108,7 +7803,7 @@
},
"node_modules/p-limit": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"dependencies": {
@@ -8123,7 +7818,7 @@
},
"node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"dependencies": {
@@ -8138,7 +7833,7 @@
},
"node_modules/p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
"engines": {
@@ -8147,7 +7842,7 @@
},
"node_modules/page": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/page/-/page-1.11.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/page/-/page-1.11.6.tgz",
"integrity": "sha512-P6e2JfzkBrPeFCIPplLP7vDDiU84RUUZMrWdsH4ZBGJ8OosnwFkcUkBHp1DTIjuipLliw9yQn/ZJsXZvarsO+g==",
"dependencies": {
"path-to-regexp": "~1.2.1"
@@ -8155,7 +7850,7 @@
},
"node_modules/param-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/param-case/-/param-case-3.0.4.tgz",
"integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
"dev": true,
"dependencies": {
@@ -8165,7 +7860,7 @@
},
"node_modules/parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dependencies": {
"callsites": "^3.0.0"
@@ -8176,7 +7871,7 @@
},
"node_modules/parse-json": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dependencies": {
"@babel/code-frame": "^7.0.0",
@@ -8193,7 +7888,7 @@
},
"node_modules/parseurl": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
"node": ">= 0.8"
@@ -8201,7 +7896,7 @@
},
"node_modules/pascal-case": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pascal-case/-/pascal-case-3.1.2.tgz",
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
"dev": true,
"dependencies": {
@@ -8211,7 +7906,7 @@
},
"node_modules/path": {
"version": "0.12.7",
- "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path/-/path-0.12.7.tgz",
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
"dev": true,
"dependencies": {
@@ -8221,7 +7916,7 @@
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"engines": {
@@ -8230,7 +7925,7 @@
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"engines": {
"node": ">=0.10.0"
@@ -8238,7 +7933,7 @@
},
"node_modules/path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
"engines": {
@@ -8247,12 +7942,12 @@
},
"node_modules/path-parse": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-to-regexp": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-to-regexp/-/path-to-regexp-1.2.1.tgz",
"integrity": "sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k=",
"dependencies": {
"isarray": "0.0.1"
@@ -8260,12 +7955,12 @@
},
"node_modules/path-to-regexp/node_modules/isarray": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"node_modules/path-type": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"engines": {
"node": ">=8"
@@ -8273,7 +7968,7 @@
},
"node_modules/pathval": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pathval/-/pathval-1.1.1.tgz",
"integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true,
"engines": {
@@ -8282,18 +7977,18 @@
},
"node_modules/pend": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
"node_modules/picocolors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"engines": {
"node": ">=8.6"
@@ -8304,7 +7999,7 @@
},
"node_modules/pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pkg-dir/-/pkg-dir-4.2.0.tgz",
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"dependencies": {
@@ -8316,7 +8011,7 @@
},
"node_modules/pkg-dir/node_modules/find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"dependencies": {
@@ -8329,7 +8024,7 @@
},
"node_modules/pkg-dir/node_modules/locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
@@ -8341,7 +8036,7 @@
},
"node_modules/pkg-dir/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"dependencies": {
@@ -8356,7 +8051,7 @@
},
"node_modules/pkg-dir/node_modules/p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
@@ -8368,7 +8063,7 @@
},
"node_modules/postcss": {
"version": "8.4.12",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"dev": true,
"funding": [
@@ -8392,7 +8087,7 @@
},
"node_modules/postcss-loader": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-loader/-/postcss-loader-6.2.1.tgz",
"integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
"dev": true,
"dependencies": {
@@ -8414,7 +8109,7 @@
},
"node_modules/postcss-loader/node_modules/cosmiconfig": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
"integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
"dev": true,
"dependencies": {
@@ -8430,7 +8125,7 @@
},
"node_modules/postcss-loader/node_modules/semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
@@ -8445,7 +8140,7 @@
},
"node_modules/postcss-modules-extract-imports": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
"dev": true,
"engines": {
@@ -8457,7 +8152,7 @@
},
"node_modules/postcss-modules-local-by-default": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
"integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
"dev": true,
"dependencies": {
@@ -8474,7 +8169,7 @@
},
"node_modules/postcss-modules-scope": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
"integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
"dev": true,
"dependencies": {
@@ -8489,7 +8184,7 @@
},
"node_modules/postcss-modules-values": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
"integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
"dev": true,
"dependencies": {
@@ -8504,7 +8199,7 @@
},
"node_modules/postcss-selector-parser": {
"version": "6.0.10",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
"dev": true,
"dependencies": {
@@ -8517,13 +8212,13 @@
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
"node_modules/prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
"engines": {
@@ -8532,7 +8227,7 @@
},
"node_modules/prettier": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prettier/-/prettier-2.6.2.tgz",
"integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==",
"dev": true,
"bin": {
@@ -8547,7 +8242,7 @@
},
"node_modules/pretty-error": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pretty-error/-/pretty-error-4.0.0.tgz",
"integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
"dev": true,
"dependencies": {
@@ -8557,7 +8252,7 @@
},
"node_modules/pretty-format": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pretty-format/-/pretty-format-27.5.1.tgz",
"integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
"dependencies": {
@@ -8571,7 +8266,7 @@
},
"node_modules/pretty-format/node_modules/ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
"engines": {
@@ -8583,7 +8278,7 @@
},
"node_modules/process": {
"version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true,
"engines": {
@@ -8592,7 +8287,7 @@
},
"node_modules/progress": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
"engines": {
@@ -8601,7 +8296,7 @@
},
"node_modules/prop-types": {
"version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"dependencies": {
"loose-envify": "^1.4.0",
@@ -8611,18 +8306,18 @@
},
"node_modules/prop-types/node_modules/react-is": {
"version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
"node_modules/pump": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"dependencies": {
@@ -8632,7 +8327,7 @@
},
"node_modules/punycode": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true,
"engines": {
@@ -8641,7 +8336,7 @@
},
"node_modules/puppeteer": {
"version": "13.6.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/puppeteer/-/puppeteer-13.6.0.tgz",
"integrity": "sha512-EJXhTyY5bXNPLFXPGcY9JaF6EKJIX8ll8cGG3WUK+553Jx96oDf1cB+lkFOro9p0X16tY+9xx7zYWl+vnWgW2g==",
"dev": true,
"hasInstallScript": true,
@@ -8665,12 +8360,12 @@
},
"node_modules/pwa-helpers": {
"version": "0.9.1",
- "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pwa-helpers/-/pwa-helpers-0.9.1.tgz",
"integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA=="
},
"node_modules/qjobs": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/qjobs/-/qjobs-1.2.0.tgz",
"integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
"engines": {
"node": ">=0.9"
@@ -8678,7 +8373,7 @@
},
"node_modules/qs": {
"version": "6.10.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"dependencies": {
"side-channel": "^1.0.4"
@@ -8692,7 +8387,7 @@
},
"node_modules/queue-microtask": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
@@ -8712,7 +8407,7 @@
},
"node_modules/randombytes": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
"dependencies": {
@@ -8721,7 +8416,7 @@
},
"node_modules/range-parser": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"engines": {
"node": ">= 0.6"
@@ -8729,7 +8424,7 @@
},
"node_modules/raw-body": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"dependencies": {
"bytes": "3.1.2",
@@ -8743,7 +8438,7 @@
},
"node_modules/react": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react/-/react-17.0.2.tgz",
"integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
"dependencies": {
"loose-envify": "^1.1.0",
@@ -8755,7 +8450,7 @@
},
"node_modules/react-dom": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-dom/-/react-dom-17.0.2.tgz",
"integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
"dependencies": {
"loose-envify": "^1.1.0",
@@ -8768,12 +8463,12 @@
},
"node_modules/react-is": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"node_modules/react-redux": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-redux/-/react-redux-8.0.1.tgz",
"integrity": "sha512-LMZMsPY4DYdZfLJgd7i79n5Kps5N9XVLCJJeWAaPYTV+Eah2zTuBjTxKtNEbjiyitbq80/eIkm55CYSLqAub3w==",
"dependencies": {
"@babel/runtime": "^7.12.1",
@@ -8811,12 +8506,12 @@
},
"node_modules/react-redux/node_modules/react-is": {
"version": "18.0.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-18.0.0.tgz",
"integrity": "sha512-yUcBYdBBbo3QiPsgYDcfQcIkGZHfxOaoE6HLSnr1sPzMhdyxusbfKOSUbSd/ocGi32dxcj366PsTj+5oggeKKw=="
},
"node_modules/react-transition-group": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-transition-group/-/react-transition-group-4.4.2.tgz",
"integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
"dependencies": {
"@babel/runtime": "^7.5.5",
@@ -8831,7 +8526,7 @@
},
"node_modules/readable-stream": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"dependencies": {
@@ -8845,7 +8540,7 @@
},
"node_modules/readdirp": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dependencies": {
"picomatch": "^2.2.1"
@@ -8856,7 +8551,7 @@
},
"node_modules/rechoir": {
"version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rechoir/-/rechoir-0.7.1.tgz",
"integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"dev": true,
"dependencies": {
@@ -8868,7 +8563,7 @@
},
"node_modules/redux": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/redux/-/redux-4.2.0.tgz",
"integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
"dependencies": {
"@babel/runtime": "^7.9.2"
@@ -8876,7 +8571,7 @@
},
"node_modules/redux-thunk": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/redux-thunk/-/redux-thunk-2.4.1.tgz",
"integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==",
"peerDependencies": {
"redux": "^4"
@@ -8884,13 +8579,13 @@
},
"node_modules/regenerate": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerate/-/regenerate-1.4.2.tgz",
"integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
"dev": true
},
"node_modules/regenerate-unicode-properties": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
"integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
"dev": true,
"dependencies": {
@@ -8902,12 +8597,12 @@
},
"node_modules/regenerator-runtime": {
"version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
},
"node_modules/regenerator-transform": {
"version": "0.15.0",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
"integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
"dev": true,
"dependencies": {
@@ -8916,7 +8611,7 @@
},
"node_modules/regexp.prototype.flags": {
"version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
"dev": true,
"dependencies": {
@@ -8933,7 +8628,7 @@
},
"node_modules/regexpp": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexpp/-/regexpp-3.2.0.tgz",
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true,
"engines": {
@@ -8945,7 +8640,7 @@
},
"node_modules/regexpu-core": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexpu-core/-/regexpu-core-5.0.1.tgz",
"integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==",
"dev": true,
"dependencies": {
@@ -8962,13 +8657,13 @@
},
"node_modules/regjsgen": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regjsgen/-/regjsgen-0.6.0.tgz",
"integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
"dev": true
},
"node_modules/regjsparser": {
"version": "0.8.4",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regjsparser/-/regjsparser-0.8.4.tgz",
"integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
"dev": true,
"dependencies": {
@@ -8980,7 +8675,7 @@
},
"node_modules/regjsparser/node_modules/jsesc": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true,
"bin": {
@@ -8989,7 +8684,7 @@
},
"node_modules/relateurl": {
"version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/relateurl/-/relateurl-0.2.7.tgz",
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true,
"engines": {
@@ -8998,7 +8693,7 @@
},
"node_modules/renderkid": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/renderkid/-/renderkid-3.0.0.tgz",
"integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
"dev": true,
"dependencies": {
@@ -9011,7 +8706,7 @@
},
"node_modules/require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"engines": {
"node": ">=0.10.0"
@@ -9019,17 +8714,17 @@
},
"node_modules/requires-port": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
},
"node_modules/reselect": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/reselect/-/reselect-4.1.5.tgz",
"integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ=="
},
"node_modules/resolve": {
"version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve/-/resolve-1.22.0.tgz",
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
"dependencies": {
"is-core-module": "^2.8.1",
@@ -9045,7 +8740,7 @@
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
"integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
"dependencies": {
@@ -9057,7 +8752,7 @@
},
"node_modules/resolve-cwd/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
"engines": {
@@ -9066,7 +8761,7 @@
},
"node_modules/resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"engines": {
"node": ">=4"
@@ -9074,7 +8769,7 @@
},
"node_modules/reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
"engines": {
@@ -9084,12 +8779,12 @@
},
"node_modules/rfdc": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rfdc/-/rfdc-1.3.0.tgz",
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"node_modules/rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dependencies": {
"glob": "^7.1.3"
@@ -9103,7 +8798,7 @@
},
"node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
@@ -9126,17 +8821,17 @@
},
"node_modules/safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/scheduler": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/scheduler/-/scheduler-0.20.2.tgz",
"integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
"dependencies": {
"loose-envify": "^1.1.0",
@@ -9145,7 +8840,7 @@
},
"node_modules/schema-utils": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-2.7.1.tgz",
"integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
"dev": true,
"dependencies": {
@@ -9163,7 +8858,7 @@
},
"node_modules/semver": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"bin": {
"semver": "bin/semver.js"
@@ -9171,7 +8866,7 @@
},
"node_modules/serialize-javascript": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
"dependencies": {
@@ -9180,12 +8875,12 @@
},
"node_modules/setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/shallow-clone": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shallow-clone/-/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
"dependencies": {
@@ -9197,7 +8892,7 @@
},
"node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"dependencies": {
@@ -9209,7 +8904,7 @@
},
"node_modules/shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
"engines": {
@@ -9218,7 +8913,7 @@
},
"node_modules/side-channel": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dependencies": {
"call-bind": "^1.0.0",
@@ -9231,13 +8926,13 @@
},
"node_modules/signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"node_modules/sinon": {
"version": "13.0.2",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/sinon/-/sinon-13.0.2.tgz",
"integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
"dev": true,
"dependencies": {
@@ -9255,7 +8950,7 @@
},
"node_modules/sinon/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -9264,7 +8959,7 @@
},
"node_modules/sinon/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -9276,7 +8971,7 @@
},
"node_modules/sirv": {
"version": "1.0.19",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/sirv/-/sirv-1.0.19.tgz",
"integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
"dev": true,
"dependencies": {
@@ -9290,7 +8985,7 @@
},
"node_modules/slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
"engines": {
@@ -9299,7 +8994,7 @@
},
"node_modules/socket.io": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io/-/socket.io-4.4.1.tgz",
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==",
"dependencies": {
"accepts": "~1.3.4",
@@ -9315,12 +9010,12 @@
},
"node_modules/socket.io-adapter": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ=="
},
"node_modules/socket.io-parser": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
"dependencies": {
"@types/component-emitter": "^1.2.10",
@@ -9333,7 +9028,7 @@
},
"node_modules/source-map": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"engines": {
"node": ">=0.10.0"
@@ -9341,7 +9036,7 @@
},
"node_modules/source-map-js": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true,
"engines": {
@@ -9350,7 +9045,7 @@
},
"node_modules/source-map-support": {
"version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
"dependencies": {
@@ -9360,22 +9055,16 @@
},
"node_modules/source-map-support/node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
"node_modules/statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"engines": {
"node": ">= 0.6"
@@ -9383,7 +9072,7 @@
},
"node_modules/streamroller": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/streamroller/-/streamroller-3.0.7.tgz",
"integrity": "sha512-kh68kwiDGuIPiPDWwRbEC5us+kfARP1e9AsQiaLaSqGrctOvMn0mtL8iNY3r4/o5nIoYi3gPI1jexguZsXDlxw==",
"dependencies": {
"date-format": "^4.0.7",
@@ -9396,7 +9085,7 @@
},
"node_modules/string_decoder": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"dependencies": {
@@ -9405,7 +9094,7 @@
},
"node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true,
"funding": [
@@ -9425,7 +9114,7 @@
},
"node_modules/string-width": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
"emoji-regex": "^8.0.0",
@@ -9438,12 +9127,12 @@
},
"node_modules/string-width/node_modules/emoji-regex": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/string.prototype.matchall": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
"integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
"dev": true,
"dependencies": {
@@ -9462,7 +9151,7 @@
},
"node_modules/string.prototype.trimend": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
"integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
"dev": true,
"dependencies": {
@@ -9475,7 +9164,7 @@
},
"node_modules/string.prototype.trimstart": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
"integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
"dev": true,
"dependencies": {
@@ -9488,7 +9177,7 @@
},
"node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
"ansi-regex": "^5.0.1"
@@ -9499,7 +9188,7 @@
},
"node_modules/strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
"engines": {
@@ -9508,7 +9197,7 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"engines": {
@@ -9520,7 +9209,7 @@
},
"node_modules/style-loader": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
"dev": true,
"engines": {
@@ -9536,12 +9225,12 @@
},
"node_modules/stylis": {
"version": "4.0.13",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/stylis/-/stylis-4.0.13.tgz",
"integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
},
"node_modules/supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dependencies": {
"has-flag": "^3.0.0"
@@ -9552,7 +9241,7 @@
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"engines": {
"node": ">= 0.4"
@@ -9563,7 +9252,7 @@
},
"node_modules/tapable": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
"engines": {
@@ -9572,7 +9261,7 @@
},
"node_modules/tar-fs": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
"dependencies": {
@@ -9584,7 +9273,7 @@
},
"node_modules/tar-stream": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"dependencies": {
@@ -9600,7 +9289,7 @@
},
"node_modules/terser": {
"version": "5.12.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/terser/-/terser-5.12.1.tgz",
"integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==",
"dev": true,
"dependencies": {
@@ -9618,7 +9307,7 @@
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
"integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==",
"dev": true,
"dependencies": {
@@ -9652,7 +9341,7 @@
},
"node_modules/terser-webpack-plugin/node_modules/schema-utils": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"dependencies": {
@@ -9670,7 +9359,7 @@
},
"node_modules/terser-webpack-plugin/node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
@@ -9679,13 +9368,13 @@
},
"node_modules/terser/node_modules/commander": {
"version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
"node_modules/terser/node_modules/source-map": {
"version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true,
"engines": {
@@ -9694,24 +9383,24 @@
},
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
"node_modules/through": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"node_modules/tiny-warning": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
"node_modules/tmp": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tmp/-/tmp-0.2.1.tgz",
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"dependencies": {
"rimraf": "^3.0.0"
@@ -9722,7 +9411,7 @@
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"engines": {
"node": ">=4"
@@ -9730,7 +9419,7 @@
},
"node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dependencies": {
"is-number": "^7.0.0"
@@ -9741,7 +9430,7 @@
},
"node_modules/toidentifier": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"engines": {
"node": ">=0.6"
@@ -9749,7 +9438,7 @@
},
"node_modules/totalist": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/totalist/-/totalist-1.1.0.tgz",
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
"dev": true,
"engines": {
@@ -9758,19 +9447,19 @@
},
"node_modules/tr46": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
"dev": true
},
"node_modules/tslib": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
},
"node_modules/tsutils": {
"version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tsutils/-/tsutils-3.21.0.tgz",
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"dependencies": {
@@ -9785,13 +9474,13 @@
},
"node_modules/tsutils/node_modules/tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
"node_modules/type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"dependencies": {
@@ -9803,7 +9492,7 @@
},
"node_modules/type-detect": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
"engines": {
@@ -9812,7 +9501,7 @@
},
"node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"engines": {
@@ -9824,7 +9513,7 @@
},
"node_modules/type-is": {
"version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dependencies": {
"media-typer": "0.3.0",
@@ -9836,7 +9525,7 @@
},
"node_modules/typescript": {
"version": "4.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/typescript/-/typescript-4.6.3.tgz",
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
"dev": true,
"bin": {
@@ -9849,7 +9538,7 @@
},
"node_modules/ua-parser-js": {
"version": "0.7.31",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
"integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
"funding": [
{
@@ -9865,22 +9554,9 @@
"node": "*"
}
},
- "node_modules/uglify-js": {
- "version": "3.15.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz",
- "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==",
- "dev": true,
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/unbox-primitive": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
"integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
"dev": true,
"dependencies": {
@@ -9895,7 +9571,7 @@
},
"node_modules/unbzip2-stream": {
"version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
"integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
"dev": true,
"dependencies": {
@@ -9905,7 +9581,7 @@
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
"integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
"dev": true,
"engines": {
@@ -9914,7 +9590,7 @@
},
"node_modules/unicode-match-property-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
"integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
"dependencies": {
@@ -9927,7 +9603,7 @@
},
"node_modules/unicode-match-property-value-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
"integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
"dev": true,
"engines": {
@@ -9936,7 +9612,7 @@
},
"node_modules/unicode-property-aliases-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
"integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
"dev": true,
"engines": {
@@ -9945,7 +9621,7 @@
},
"node_modules/universalify": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"engines": {
"node": ">= 10.0.0"
@@ -9953,7 +9629,7 @@
},
"node_modules/unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
"engines": {
"node": ">= 0.8"
@@ -9961,7 +9637,7 @@
},
"node_modules/uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"dependencies": {
@@ -9970,7 +9646,7 @@
},
"node_modules/use-sync-external-store": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz",
"integrity": "sha512-AFVsxg5GkFg8GDcxnl+Z0lMAz9rE8DGJCc28qnBuQF7lac57B5smLcT37aXpXIIPz75rW4g3eXHPjhHwdGskOw==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0-rc"
@@ -9978,7 +9654,7 @@
},
"node_modules/util": {
"version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
"dependencies": {
@@ -9987,25 +9663,25 @@
},
"node_modules/util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"node_modules/util/node_modules/inherits": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"node_modules/utila": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/utila/-/utila-0.4.0.tgz",
"integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
"dev": true
},
"node_modules/utils-merge": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
"engines": {
"node": ">= 0.4.0"
@@ -10013,13 +9689,13 @@
},
"node_modules/v8-compile-cache": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
"node_modules/vary": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
"engines": {
"node": ">= 0.8"
@@ -10027,7 +9703,7 @@
},
"node_modules/void-elements": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/void-elements/-/void-elements-2.0.1.tgz",
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
"engines": {
"node": ">=0.10.0"
@@ -10035,7 +9711,7 @@
},
"node_modules/watchpack": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/watchpack/-/watchpack-2.3.1.tgz",
"integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
"dev": true,
"dependencies": {
@@ -10048,13 +9724,13 @@
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
"dev": true
},
"node_modules/webpack": {
"version": "5.72.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack/-/webpack-5.72.0.tgz",
"integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==",
"dev": true,
"dependencies": {
@@ -10101,7 +9777,7 @@
},
"node_modules/webpack-bundle-analyzer": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
"integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
"dev": true,
"dependencies": {
@@ -10124,7 +9800,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
@@ -10139,7 +9815,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
@@ -10155,7 +9831,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
@@ -10167,7 +9843,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"engines": {
@@ -10176,7 +9852,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
@@ -10185,7 +9861,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
@@ -10197,7 +9873,7 @@
},
"node_modules/webpack-bundle-analyzer/node_modules/ws": {
"version": "7.5.7",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-7.5.7.tgz",
"integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
"dev": true,
"engines": {
@@ -10218,7 +9894,7 @@
},
"node_modules/webpack-cli": {
"version": "4.9.2",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-cli/-/webpack-cli-4.9.2.tgz",
"integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==",
"dev": true,
"dependencies": {
@@ -10261,7 +9937,7 @@
},
"node_modules/webpack-cli/node_modules/commander": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"engines": {
@@ -10270,7 +9946,7 @@
},
"node_modules/webpack-cli/node_modules/webpack-merge": {
"version": "5.8.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-merge/-/webpack-merge-5.8.0.tgz",
"integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
"dev": true,
"dependencies": {
@@ -10283,7 +9959,7 @@
},
"node_modules/webpack-merge": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-merge/-/webpack-merge-4.2.2.tgz",
"integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
"dev": true,
"dependencies": {
@@ -10292,7 +9968,7 @@
},
"node_modules/webpack-sources": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-sources/-/webpack-sources-3.2.3.tgz",
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
"engines": {
@@ -10301,7 +9977,7 @@
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"dependencies": {
@@ -10319,7 +9995,7 @@
},
"node_modules/whatwg-url": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"dev": true,
"dependencies": {
@@ -10329,7 +10005,7 @@
},
"node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
@@ -10344,7 +10020,7 @@
},
"node_modules/which-boxed-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"dependencies": {
@@ -10360,7 +10036,7 @@
},
"node_modules/which-collection": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-collection/-/which-collection-1.0.1.tgz",
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
"dev": true,
"dependencies": {
@@ -10375,7 +10051,7 @@
},
"node_modules/which-typed-array": {
"version": "1.1.7",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-typed-array/-/which-typed-array-1.1.7.tgz",
"integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
"dev": true,
"dependencies": {
@@ -10395,34 +10071,28 @@
},
"node_modules/wildcard": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wildcard/-/wildcard-2.0.0.tgz",
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true
},
"node_modules/word-wrap": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
"node_modules/workerpool": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/workerpool/-/workerpool-6.2.0.tgz",
"integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
"dev": true
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": {
"ansi-styles": "^4.0.0",
@@ -10438,7 +10108,7 @@
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
@@ -10452,7 +10122,7 @@
},
"node_modules/wrap-ansi/node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
@@ -10463,12 +10133,12 @@
},
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"node_modules/ws": {
"version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-8.5.0.tgz",
"integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
"dev": true,
"engines": {
@@ -10489,7 +10159,7 @@
},
"node_modules/y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"engines": {
"node": ">=10"
@@ -10497,13 +10167,13 @@
},
"node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"node_modules/yaml": {
"version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"engines": {
"node": ">= 6"
@@ -10511,7 +10181,7 @@
},
"node_modules/yargs": {
"version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dependencies": {
"cliui": "^7.0.2",
@@ -10528,7 +10198,7 @@
},
"node_modules/yargs-parser": {
"version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs-parser/-/yargs-parser-20.2.4.tgz",
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"engines": {
"node": ">=10"
@@ -10536,7 +10206,7 @@
},
"node_modules/yargs-unparser": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
"dependencies": {
@@ -10551,7 +10221,7 @@
},
"node_modules/yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"dependencies": {
@@ -10561,7 +10231,7 @@
},
"node_modules/yocto-queue": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
"engines": {
@@ -10575,7 +10245,7 @@
"dependencies": {
"@ampproject/remapping": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@ampproject/remapping/-/remapping-2.1.2.tgz",
"integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
"requires": {
"@jridgewell/trace-mapping": "^0.3.0"
@@ -10583,7 +10253,7 @@
},
"@babel/code-frame": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/code-frame/-/code-frame-7.16.7.tgz",
"integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
"requires": {
"@babel/highlight": "^7.16.7"
@@ -10591,12 +10261,12 @@
},
"@babel/compat-data": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/compat-data/-/compat-data-7.17.7.tgz",
"integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ=="
},
"@babel/core": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/core/-/core-7.17.9.tgz",
"integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==",
"requires": {
"@ampproject/remapping": "^2.1.0",
@@ -10618,7 +10288,7 @@
},
"@babel/generator": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/generator/-/generator-7.17.9.tgz",
"integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==",
"requires": {
"@babel/types": "^7.17.0",
@@ -10628,7 +10298,7 @@
},
"@babel/helper-annotate-as-pure": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
"integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
"dev": true,
"requires": {
@@ -10637,7 +10307,7 @@
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
"integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
"dev": true,
"requires": {
@@ -10647,7 +10317,7 @@
},
"@babel/helper-compilation-targets": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
"integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
"requires": {
"@babel/compat-data": "^7.17.7",
@@ -10658,7 +10328,7 @@
},
"@babel/helper-create-class-features-plugin": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz",
"integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==",
"dev": true,
"requires": {
@@ -10673,7 +10343,7 @@
},
"@babel/helper-create-regexp-features-plugin": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz",
"integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==",
"dev": true,
"requires": {
@@ -10683,7 +10353,7 @@
},
"@babel/helper-define-polyfill-provider": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
"integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
"dev": true,
"requires": {
@@ -10699,7 +10369,7 @@
},
"@babel/helper-environment-visitor": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
"integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
"requires": {
"@babel/types": "^7.16.7"
@@ -10707,7 +10377,7 @@
},
"@babel/helper-explode-assignable-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
"integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
"dev": true,
"requires": {
@@ -10716,7 +10386,7 @@
},
"@babel/helper-function-name": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
"integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
"requires": {
"@babel/template": "^7.16.7",
@@ -10725,7 +10395,7 @@
},
"@babel/helper-hoist-variables": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
"integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
"requires": {
"@babel/types": "^7.16.7"
@@ -10733,7 +10403,7 @@
},
"@babel/helper-member-expression-to-functions": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
"integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==",
"dev": true,
"requires": {
@@ -10742,7 +10412,7 @@
},
"@babel/helper-module-imports": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
"integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
"requires": {
"@babel/types": "^7.16.7"
@@ -10750,7 +10420,7 @@
},
"@babel/helper-module-transforms": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
"integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
"requires": {
"@babel/helper-environment-visitor": "^7.16.7",
@@ -10765,7 +10435,7 @@
},
"@babel/helper-optimise-call-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
"integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
"dev": true,
"requires": {
@@ -10774,12 +10444,12 @@
},
"@babel/helper-plugin-utils": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
"integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA=="
},
"@babel/helper-remap-async-to-generator": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
"integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
"dev": true,
"requires": {
@@ -10790,7 +10460,7 @@
},
"@babel/helper-replace-supers": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
"integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
"dev": true,
"requires": {
@@ -10803,7 +10473,7 @@
},
"@babel/helper-simple-access": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
"integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
"requires": {
"@babel/types": "^7.17.0"
@@ -10811,7 +10481,7 @@
},
"@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
"integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
"dev": true,
"requires": {
@@ -10820,7 +10490,7 @@
},
"@babel/helper-split-export-declaration": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
"integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
"requires": {
"@babel/types": "^7.16.7"
@@ -10828,17 +10498,17 @@
},
"@babel/helper-validator-identifier": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
"integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
},
"@babel/helper-validator-option": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
"integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ=="
},
"@babel/helper-wrap-function": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
"integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
"dev": true,
"requires": {
@@ -10850,7 +10520,7 @@
},
"@babel/helpers": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/helpers/-/helpers-7.17.9.tgz",
"integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
"requires": {
"@babel/template": "^7.16.7",
@@ -10860,7 +10530,7 @@
},
"@babel/highlight": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/highlight/-/highlight-7.17.9.tgz",
"integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -10870,12 +10540,12 @@
},
"@babel/parser": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/parser/-/parser-7.17.9.tgz",
"integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
"integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
"dev": true,
"requires": {
@@ -10884,7 +10554,7 @@
},
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
"integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
"dev": true,
"requires": {
@@ -10895,7 +10565,7 @@
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
"integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
"dev": true,
"requires": {
@@ -10906,7 +10576,7 @@
},
"@babel/plugin-proposal-class-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
"integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
"dev": true,
"requires": {
@@ -10916,7 +10586,7 @@
},
"@babel/plugin-proposal-class-static-block": {
"version": "7.17.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz",
"integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==",
"dev": true,
"requires": {
@@ -10927,7 +10597,7 @@
},
"@babel/plugin-proposal-decorators": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz",
"integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==",
"dev": true,
"requires": {
@@ -10941,7 +10611,7 @@
},
"@babel/plugin-proposal-dynamic-import": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
"integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
"dev": true,
"requires": {
@@ -10951,7 +10621,7 @@
},
"@babel/plugin-proposal-export-namespace-from": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
"integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
"dev": true,
"requires": {
@@ -10961,7 +10631,7 @@
},
"@babel/plugin-proposal-json-strings": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
"integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
"dev": true,
"requires": {
@@ -10971,7 +10641,7 @@
},
"@babel/plugin-proposal-logical-assignment-operators": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
"integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
"dev": true,
"requires": {
@@ -10981,7 +10651,7 @@
},
"@babel/plugin-proposal-nullish-coalescing-operator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
"integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
"dev": true,
"requires": {
@@ -10991,7 +10661,7 @@
},
"@babel/plugin-proposal-numeric-separator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
"integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
"dev": true,
"requires": {
@@ -11001,7 +10671,7 @@
},
"@babel/plugin-proposal-object-rest-spread": {
"version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz",
"integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==",
"dev": true,
"requires": {
@@ -11014,7 +10684,7 @@
},
"@babel/plugin-proposal-optional-catch-binding": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
"integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
"dev": true,
"requires": {
@@ -11024,7 +10694,7 @@
},
"@babel/plugin-proposal-optional-chaining": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
"integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
"dev": true,
"requires": {
@@ -11035,7 +10705,7 @@
},
"@babel/plugin-proposal-private-methods": {
"version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
"integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==",
"dev": true,
"requires": {
@@ -11045,7 +10715,7 @@
},
"@babel/plugin-proposal-private-property-in-object": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
"integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
"dev": true,
"requires": {
@@ -11057,7 +10727,7 @@
},
"@babel/plugin-proposal-unicode-property-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
"integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
"dev": true,
"requires": {
@@ -11067,7 +10737,7 @@
},
"@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
"requires": {
@@ -11076,7 +10746,7 @@
},
"@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
"requires": {
@@ -11085,7 +10755,7 @@
},
"@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"requires": {
@@ -11094,7 +10764,7 @@
},
"@babel/plugin-syntax-decorators": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz",
"integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==",
"dev": true,
"requires": {
@@ -11103,7 +10773,7 @@
},
"@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"requires": {
@@ -11112,7 +10782,7 @@
},
"@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
"integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"requires": {
@@ -11121,7 +10791,7 @@
},
"@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
"requires": {
@@ -11130,7 +10800,7 @@
},
"@babel/plugin-syntax-jsx": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
"integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
"requires": {
"@babel/helper-plugin-utils": "^7.16.7"
@@ -11138,7 +10808,7 @@
},
"@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
"requires": {
@@ -11147,7 +10817,7 @@
},
"@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
"requires": {
@@ -11156,7 +10826,7 @@
},
"@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
"requires": {
@@ -11165,7 +10835,7 @@
},
"@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"requires": {
@@ -11174,7 +10844,7 @@
},
"@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
"requires": {
@@ -11183,7 +10853,7 @@
},
"@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
"requires": {
@@ -11192,7 +10862,7 @@
},
"@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"requires": {
@@ -11201,7 +10871,7 @@
},
"@babel/plugin-syntax-top-level-await": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
"requires": {
@@ -11210,7 +10880,7 @@
},
"@babel/plugin-syntax-typescript": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
"integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==",
"dev": true,
"requires": {
@@ -11219,7 +10889,7 @@
},
"@babel/plugin-transform-arrow-functions": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
"integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
"dev": true,
"requires": {
@@ -11228,7 +10898,7 @@
},
"@babel/plugin-transform-async-to-generator": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
"integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
"dev": true,
"requires": {
@@ -11239,7 +10909,7 @@
},
"@babel/plugin-transform-block-scoped-functions": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
"integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
"dev": true,
"requires": {
@@ -11248,7 +10918,7 @@
},
"@babel/plugin-transform-block-scoping": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
"integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
"dev": true,
"requires": {
@@ -11257,7 +10927,7 @@
},
"@babel/plugin-transform-classes": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
"integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
"dev": true,
"requires": {
@@ -11273,7 +10943,7 @@
},
"@babel/plugin-transform-computed-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
"integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
"dev": true,
"requires": {
@@ -11282,7 +10952,7 @@
},
"@babel/plugin-transform-destructuring": {
"version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz",
"integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==",
"dev": true,
"requires": {
@@ -11291,7 +10961,7 @@
},
"@babel/plugin-transform-dotall-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
"integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
"dev": true,
"requires": {
@@ -11301,7 +10971,7 @@
},
"@babel/plugin-transform-duplicate-keys": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
"integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
"dev": true,
"requires": {
@@ -11310,7 +10980,7 @@
},
"@babel/plugin-transform-exponentiation-operator": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
"integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
"dev": true,
"requires": {
@@ -11320,7 +10990,7 @@
},
"@babel/plugin-transform-for-of": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
"integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
"dev": true,
"requires": {
@@ -11329,7 +10999,7 @@
},
"@babel/plugin-transform-function-name": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
"integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
"dev": true,
"requires": {
@@ -11340,7 +11010,7 @@
},
"@babel/plugin-transform-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
"integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
"dev": true,
"requires": {
@@ -11349,7 +11019,7 @@
},
"@babel/plugin-transform-member-expression-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
"integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
"dev": true,
"requires": {
@@ -11358,7 +11028,7 @@
},
"@babel/plugin-transform-modules-amd": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
"integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
"dev": true,
"requires": {
@@ -11369,7 +11039,7 @@
},
"@babel/plugin-transform-modules-commonjs": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
"integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
"dev": true,
"requires": {
@@ -11381,7 +11051,7 @@
},
"@babel/plugin-transform-modules-systemjs": {
"version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz",
"integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==",
"dev": true,
"requires": {
@@ -11394,7 +11064,7 @@
},
"@babel/plugin-transform-modules-umd": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
"integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
"dev": true,
"requires": {
@@ -11404,7 +11074,7 @@
},
"@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
"integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==",
"dev": true,
"requires": {
@@ -11413,7 +11083,7 @@
},
"@babel/plugin-transform-new-target": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
"integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
"dev": true,
"requires": {
@@ -11422,7 +11092,7 @@
},
"@babel/plugin-transform-object-super": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
"integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
"dev": true,
"requires": {
@@ -11432,7 +11102,7 @@
},
"@babel/plugin-transform-parameters": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
"integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
"dev": true,
"requires": {
@@ -11441,7 +11111,7 @@
},
"@babel/plugin-transform-property-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
"integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
"dev": true,
"requires": {
@@ -11450,7 +11120,7 @@
},
"@babel/plugin-transform-react-display-name": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz",
"integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==",
"dev": true,
"requires": {
@@ -11459,7 +11129,7 @@
},
"@babel/plugin-transform-react-jsx": {
"version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz",
"integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==",
"dev": true,
"requires": {
@@ -11472,7 +11142,7 @@
},
"@babel/plugin-transform-react-jsx-development": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz",
"integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==",
"dev": true,
"requires": {
@@ -11481,7 +11151,7 @@
},
"@babel/plugin-transform-react-pure-annotations": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz",
"integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==",
"dev": true,
"requires": {
@@ -11491,7 +11161,7 @@
},
"@babel/plugin-transform-regenerator": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
"integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==",
"dev": true,
"requires": {
@@ -11500,7 +11170,7 @@
},
"@babel/plugin-transform-reserved-words": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
"integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
"dev": true,
"requires": {
@@ -11509,7 +11179,7 @@
},
"@babel/plugin-transform-shorthand-properties": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
"integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
"dev": true,
"requires": {
@@ -11518,7 +11188,7 @@
},
"@babel/plugin-transform-spread": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
"integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
"dev": true,
"requires": {
@@ -11528,7 +11198,7 @@
},
"@babel/plugin-transform-sticky-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
"integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
"dev": true,
"requires": {
@@ -11537,7 +11207,7 @@
},
"@babel/plugin-transform-template-literals": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
"integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
"dev": true,
"requires": {
@@ -11546,7 +11216,7 @@
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
"integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
"dev": true,
"requires": {
@@ -11555,7 +11225,7 @@
},
"@babel/plugin-transform-typescript": {
"version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
"integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==",
"dev": true,
"requires": {
@@ -11566,7 +11236,7 @@
},
"@babel/plugin-transform-unicode-escapes": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
"integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
"dev": true,
"requires": {
@@ -11575,7 +11245,7 @@
},
"@babel/plugin-transform-unicode-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
"integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
"dev": true,
"requires": {
@@ -11585,7 +11255,7 @@
},
"@babel/preset-env": {
"version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-env/-/preset-env-7.16.11.tgz",
"integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
"dev": true,
"requires": {
@@ -11667,7 +11337,7 @@
},
"@babel/preset-modules": {
"version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
"integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
"dev": true,
"requires": {
@@ -11680,7 +11350,7 @@
},
"@babel/preset-react": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-react/-/preset-react-7.16.7.tgz",
"integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==",
"dev": true,
"requires": {
@@ -11694,7 +11364,7 @@
},
"@babel/preset-typescript": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz",
"integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==",
"dev": true,
"requires": {
@@ -11705,7 +11375,7 @@
},
"@babel/runtime": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/runtime/-/runtime-7.17.9.tgz",
"integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
"requires": {
"regenerator-runtime": "^0.13.4"
@@ -11713,7 +11383,7 @@
},
"@babel/runtime-corejs3": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz",
"integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==",
"dev": true,
"requires": {
@@ -11723,7 +11393,7 @@
},
"@babel/template": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/template/-/template-7.16.7.tgz",
"integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
"requires": {
"@babel/code-frame": "^7.16.7",
@@ -11733,7 +11403,7 @@
},
"@babel/traverse": {
"version": "7.17.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/traverse/-/traverse-7.17.9.tgz",
"integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==",
"requires": {
"@babel/code-frame": "^7.16.7",
@@ -11750,7 +11420,7 @@
},
"@babel/types": {
"version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@babel/types/-/types-7.17.0.tgz",
"integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -11759,7 +11429,7 @@
},
"@chopsui/chops-signin": {
"version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@chopsui/chops-signin/-/chops-signin-0.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/chops-signin/-/chops-signin-0.3.2.tgz",
"integrity": "sha512-6jL+Bsfma3UtcDkwhh7uEbUSbPJS6reWvL9UlrRcyMq97qQf7GGr4WtAU4rDFRkeOB5W4+dld2YGf3dNomILnQ==",
"requires": {
"lit-element": "^2.0.0"
@@ -11767,7 +11437,7 @@
},
"@chopsui/karma-reporter": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@chopsui/karma-reporter/-/karma-reporter-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/karma-reporter/-/karma-reporter-1.1.5.tgz",
"integrity": "sha512-vYj8Yrovgqi4lHHB3BSeyGVntS2Ov5KoluSttVTVC862jvtSSflPO58wnWNVgQUJIKxmG5bTA71D1bFC1rUXoQ==",
"requires": {
"axe-core": "^3.4.1"
@@ -11775,35 +11445,35 @@
"dependencies": {
"axe-core": {
"version": "3.5.6",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.5.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axe-core/-/axe-core-3.5.6.tgz",
"integrity": "sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ=="
}
}
},
"@chopsui/prpc-client": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@chopsui/prpc-client/-/prpc-client-0.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/prpc-client/-/prpc-client-0.0.2.tgz",
"integrity": "sha512-PKWMkcqNMZTw0tYVIYchGzNqgxLhnf/xjQVxvDUHASgCleryVj4oEs6p28WvY1ZEHTPEONWjnNPN1RhZHdqpHA=="
},
"@chopsui/tsmon-client": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@chopsui/tsmon-client/-/tsmon-client-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@chopsui/tsmon-client/-/tsmon-client-1.0.1.tgz",
"integrity": "sha512-snatoVhzUH7B78sNIAbnfnN4DB3qHSD8HC0bdAhGzDGPOEMqm4/PPEDyDk3gyPHtpr1Gomh7sEBoNAY6+RL17A=="
},
"@colors/colors": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
},
"@discoveryjs/json-ext": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true
},
"@emotion/babel-plugin": {
"version": "11.9.2",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz",
"integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==",
"requires": {
"@babel/helper-module-imports": "^7.12.13",
@@ -11822,7 +11492,7 @@
},
"@emotion/cache": {
"version": "11.7.1",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/cache/-/cache-11.7.1.tgz",
"integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==",
"requires": {
"@emotion/memoize": "^0.7.4",
@@ -11834,12 +11504,12 @@
},
"@emotion/hash": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
},
"@emotion/is-prop-valid": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz",
"integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==",
"requires": {
"@emotion/memoize": "^0.7.4"
@@ -11847,12 +11517,12 @@
},
"@emotion/memoize": {
"version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/memoize/-/memoize-0.7.5.tgz",
"integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="
},
"@emotion/react": {
"version": "11.9.0",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/react/-/react-11.9.0.tgz",
"integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==",
"requires": {
"@babel/runtime": "^7.13.10",
@@ -11866,7 +11536,7 @@
},
"@emotion/serialize": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/serialize/-/serialize-1.0.3.tgz",
"integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==",
"requires": {
"@emotion/hash": "^0.8.0",
@@ -11878,12 +11548,12 @@
},
"@emotion/sheet": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/sheet/-/sheet-1.1.0.tgz",
"integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g=="
},
"@emotion/styled": {
"version": "11.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/styled/-/styled-11.8.1.tgz",
"integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==",
"requires": {
"@babel/runtime": "^7.13.10",
@@ -11895,22 +11565,22 @@
},
"@emotion/unitless": {
"version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"@emotion/utils": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/utils/-/utils-1.1.0.tgz",
"integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ=="
},
"@emotion/weak-memoize": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
},
"@eslint/eslintrc": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
"integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==",
"dev": true,
"requires": {
@@ -11927,7 +11597,7 @@
"dependencies": {
"globals": {
"version": "13.13.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-13.13.0.tgz",
"integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"requires": {
@@ -11938,7 +11608,7 @@
},
"@humanwhocodes/config-array": {
"version": "0.9.5",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
"integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
"dev": true,
"requires": {
@@ -11949,29 +11619,29 @@
},
"@humanwhocodes/object-schema": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"@istanbuljs/schema": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@istanbuljs/schema/-/schema-0.1.3.tgz",
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
"dev": true
},
"@jridgewell/resolve-uri": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
"integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew=="
},
"@jridgewell/sourcemap-codec": {
"version": "1.4.11",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
"integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg=="
},
"@jridgewell/trace-mapping": {
"version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"requires": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -11980,7 +11650,7 @@
},
"@material-ui/core": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/core/-/core-5.0.0-beta.5.tgz",
"integrity": "sha512-ubRMdWJ+Maqvo0P13M+AThaHp5rBBIaURxoQ+Dx4/2Llrm1mepjINDL5PsABabqUbbNc6K+cmqgX4gwEFe7exw==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12000,7 +11670,7 @@
},
"@material-ui/icons": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/icons/-/icons-5.0.0-beta.5.tgz",
"integrity": "sha512-C2KHSf8mvDn22rzsV0UfsJyBYI3Nt/LItcKPJBAG9kgqdBHAuLMH2lfKmdMuX55qd8O+NO5rM7aIHdYQRjfcMQ==",
"requires": {
"@babel/runtime": "^7.14.8"
@@ -12008,7 +11678,7 @@
},
"@material-ui/private-theming": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/private-theming/-/private-theming-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/private-theming/-/private-theming-5.0.0-beta.5.tgz",
"integrity": "sha512-3J642OgHUAga6CYtzWRWG3d5FKG6NMTSxXSyk0Cc85iz/Zvl3n+x7g/MCeq8VjZULv10NzkySIXdNFQi8EKmYA==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12018,7 +11688,7 @@
},
"@material-ui/styled-engine": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/styled-engine/-/styled-engine-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/styled-engine/-/styled-engine-5.0.0-beta.5.tgz",
"integrity": "sha512-tZiHu/GQYoME9Gj7BdIL+giQRt0ptuFIrr3Tm0fIbBB2fXYKzUKiJcggG6R5tjSXX5TUsipXpOIK3h5Kh5ZYtw==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12028,7 +11698,7 @@
},
"@material-ui/styles": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/styles/-/styles-5.0.0-beta.5.tgz",
"integrity": "sha512-qG88DGXNWgsdO8uhmJy0qVXX7TOIvCg9v6sL6CNDluPlao1cgw5UiHBkVBDqMJIOj+KiqThWzh/akzV+oEngSQ==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12052,7 +11722,7 @@
},
"@material-ui/system": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/system/-/system-5.0.0-beta.5.tgz",
"integrity": "sha512-4l0u/66X68xeSVumk5TY3vFS/5xwEhE3z68iRVRt36KwMItlWPEZTHFq2YTJVuBbGH9eQJxOsKRWUmpfswukKQ==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12067,13 +11737,13 @@
},
"@material-ui/types": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/types/-/types-6.0.2.tgz",
"integrity": "sha512-/XUca4wUb9pWimLLdM1PE8KS8rTbDEGohSGkGtk3WST7lm23m+8RYv9uOmrvOg/VSsl4bMiOv4t2/LCb+RLbTg==",
"requires": {}
},
"@material-ui/unstyled": {
"version": "5.0.0-alpha.44",
- "resolved": "https://registry.npmjs.org/@material-ui/unstyled/-/unstyled-5.0.0-alpha.44.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/unstyled/-/unstyled-5.0.0-alpha.44.tgz",
"integrity": "sha512-RNFs6CF+V/pdgxtN+hLA3/17CZ6uGEJit0qlvxb7CnSqMcN8dCen7jApnNDr3SMfZB6O0/B/sbnTQAOm1Cl3nQ==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12086,7 +11756,7 @@
},
"@material-ui/utils": {
"version": "5.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-5.0.0-beta.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@material-ui/utils/-/utils-5.0.0-beta.5.tgz",
"integrity": "sha512-wtJ3ovXWZdTAz5eLBqvMpYH/IBJb3qMQbGCyL1i00+sf7AUlAuv4QLx+QtX/siA6L7IpxUQVfqpoCpQH1eYRpQ==",
"requires": {
"@babel/runtime": "^7.14.8",
@@ -12098,7 +11768,7 @@
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"requires": {
@@ -12108,13 +11778,13 @@
},
"@nodelib/fs.stat": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true
},
"@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"requires": {
@@ -12124,18 +11794,18 @@
},
"@polka/url": {
"version": "1.0.0-next.21",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@polka/url/-/url-1.0.0-next.21.tgz",
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"@popperjs/core": {
"version": "2.11.5",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@popperjs/core/-/core-2.11.5.tgz",
"integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw=="
},
"@sinonjs/commons": {
"version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/commons/-/commons-1.8.3.tgz",
"integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
"dev": true,
"requires": {
@@ -12144,7 +11814,7 @@
},
"@sinonjs/fake-timers": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
"integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
"dev": true,
"requires": {
@@ -12153,7 +11823,7 @@
},
"@sinonjs/samsam": {
"version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/samsam/-/samsam-6.1.1.tgz",
"integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==",
"dev": true,
"requires": {
@@ -12164,18 +11834,18 @@
},
"@sinonjs/text-encoding": {
"version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
"integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
"dev": true
},
"@socket.io/base64-arraybuffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ=="
},
"@testing-library/dom": {
"version": "8.13.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/dom/-/dom-8.13.0.tgz",
"integrity": "sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==",
"dev": true,
"requires": {
@@ -12191,7 +11861,7 @@
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
@@ -12200,7 +11870,7 @@
},
"chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
@@ -12210,7 +11880,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -12219,13 +11889,13 @@
},
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -12236,7 +11906,7 @@
},
"@testing-library/react": {
"version": "12.1.5",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/react/-/react-12.1.5.tgz",
"integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
"dev": true,
"requires": {
@@ -12247,41 +11917,41 @@
},
"@testing-library/user-event": {
"version": "14.1.1",
- "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@testing-library/user-event/-/user-event-14.1.1.tgz",
"integrity": "sha512-XrjH/iEUqNl9lF2HX9YhPNV7Amntkcnpw0Bo1KkRzowNDcgSN9i0nm4Q8Oi5wupgdfPaJNMAWa61A+voD6Kmwg==",
"dev": true,
"requires": {}
},
"@types/aria-query": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
"dev": true
},
"@types/chai": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/chai/-/chai-4.3.1.tgz",
"integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==",
"dev": true
},
"@types/component-emitter": {
"version": "1.2.11",
- "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/component-emitter/-/component-emitter-1.2.11.tgz",
"integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ=="
},
"@types/cookie": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
},
"@types/cors": {
"version": "2.8.12",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/cors/-/cors-2.8.12.tgz",
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
},
"@types/eslint": {
"version": "8.4.1",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/eslint/-/eslint-8.4.1.tgz",
"integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==",
"dev": true,
"requires": {
@@ -12291,7 +11961,7 @@
},
"@types/eslint-scope": {
"version": "3.7.3",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
"integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
"dev": true,
"requires": {
@@ -12301,18 +11971,18 @@
},
"@types/estree": {
"version": "0.0.51",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/estree/-/estree-0.0.51.tgz",
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
"dev": true
},
"@types/gapi": {
"version": "0.0.41",
- "resolved": "https://registry.npmjs.org/@types/gapi/-/gapi-0.0.41.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/gapi/-/gapi-0.0.41.tgz",
"integrity": "sha512-tmHO66z/f91JZCDqinj/nNvQEszsz/hBT4+MvCSKT5sDzl5Ld/oXZ8WaecCBjRLw2uWKUInUHM9MhEXWkOiNjw=="
},
"@types/gapi.auth2": {
"version": "0.0.56",
- "resolved": "https://registry.npmjs.org/@types/gapi.auth2/-/gapi.auth2-0.0.56.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/gapi.auth2/-/gapi.auth2-0.0.56.tgz",
"integrity": "sha512-kGaBtGVCqGS3Y05L56dGVlBpJflxLfwA0zpMQnQgGRFk1tsMPbQnogG51UQjt1vCuYfRO0Jd9/K5KDtzjAbMkA==",
"requires": {
"@types/gapi": "*"
@@ -12320,7 +11990,7 @@
},
"@types/hoist-non-react-statics": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
"integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
"requires": {
"@types/react": "*",
@@ -12329,40 +11999,40 @@
},
"@types/html-minifier-terser": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
"dev": true
},
"@types/json-schema": {
"version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"@types/mocha": {
"version": "9.1.0",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/mocha/-/mocha-9.1.0.tgz",
"integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
"dev": true
},
"@types/node": {
"version": "17.0.25",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/node/-/node-17.0.25.tgz",
"integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w=="
},
"@types/parse-json": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"@types/prop-types": {
"version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/prop-types/-/prop-types-15.7.5.tgz",
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
"version": "17.0.44",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react/-/react-17.0.44.tgz",
"integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==",
"requires": {
"@types/prop-types": "*",
@@ -12372,7 +12042,7 @@
},
"@types/react-dom": {
"version": "17.0.15",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.15.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-dom/-/react-dom-17.0.15.tgz",
"integrity": "sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw==",
"devOptional": true,
"requires": {
@@ -12381,7 +12051,7 @@
},
"@types/react-is": {
"version": "17.0.3",
- "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-is/-/react-is-17.0.3.tgz",
"integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==",
"requires": {
"@types/react": "*"
@@ -12389,7 +12059,7 @@
},
"@types/react-transition-group": {
"version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
"integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==",
"requires": {
"@types/react": "*"
@@ -12397,17 +12067,17 @@
},
"@types/scheduler": {
"version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/scheduler/-/scheduler-0.16.2.tgz",
"integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"@types/use-sync-external-store": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
"integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
},
"@types/yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@types/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
"dev": true,
"optional": true,
@@ -12417,7 +12087,7 @@
},
"@typescript-eslint/eslint-plugin": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz",
"integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==",
"dev": true,
"requires": {
@@ -12434,7 +12104,7 @@
"dependencies": {
"semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
@@ -12445,7 +12115,7 @@
},
"@typescript-eslint/parser": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/parser/-/parser-5.20.0.tgz",
"integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==",
"dev": true,
"requires": {
@@ -12457,7 +12127,7 @@
},
"@typescript-eslint/scope-manager": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz",
"integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==",
"dev": true,
"requires": {
@@ -12467,7 +12137,7 @@
},
"@typescript-eslint/type-utils": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz",
"integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==",
"dev": true,
"requires": {
@@ -12478,13 +12148,13 @@
},
"@typescript-eslint/types": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/types/-/types-5.20.0.tgz",
"integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz",
"integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==",
"dev": true,
"requires": {
@@ -12499,7 +12169,7 @@
"dependencies": {
"semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
@@ -12510,7 +12180,7 @@
},
"@typescript-eslint/utils": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/utils/-/utils-5.20.0.tgz",
"integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==",
"dev": true,
"requires": {
@@ -12524,7 +12194,7 @@
},
"@typescript-eslint/visitor-keys": {
"version": "5.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz",
"integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==",
"dev": true,
"requires": {
@@ -12534,13 +12204,13 @@
},
"@ungap/promise-all-settled": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
"@webassemblyjs/ast": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/ast/-/ast-1.11.1.tgz",
"integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
"dev": true,
"requires": {
@@ -12550,25 +12220,25 @@
},
"@webassemblyjs/floating-point-hex-parser": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
"integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
"dev": true
},
"@webassemblyjs/helper-api-error": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
"integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
"dev": true
},
"@webassemblyjs/helper-buffer": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
"integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
"dev": true
},
"@webassemblyjs/helper-numbers": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
"integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
"dev": true,
"requires": {
@@ -12579,13 +12249,13 @@
},
"@webassemblyjs/helper-wasm-bytecode": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
"integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
"dev": true
},
"@webassemblyjs/helper-wasm-section": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
"integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
"dev": true,
"requires": {
@@ -12597,7 +12267,7 @@
},
"@webassemblyjs/ieee754": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
"integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
"dev": true,
"requires": {
@@ -12606,7 +12276,7 @@
},
"@webassemblyjs/leb128": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
"integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
"dev": true,
"requires": {
@@ -12615,13 +12285,13 @@
},
"@webassemblyjs/utf8": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
"integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
"dev": true
},
"@webassemblyjs/wasm-edit": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
"integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
"dev": true,
"requires": {
@@ -12637,7 +12307,7 @@
},
"@webassemblyjs/wasm-gen": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
"integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
"dev": true,
"requires": {
@@ -12650,7 +12320,7 @@
},
"@webassemblyjs/wasm-opt": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
"integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
"dev": true,
"requires": {
@@ -12662,7 +12332,7 @@
},
"@webassemblyjs/wasm-parser": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
"integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
"dev": true,
"requires": {
@@ -12676,7 +12346,7 @@
},
"@webassemblyjs/wast-printer": {
"version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
"integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
"dev": true,
"requires": {
@@ -12686,14 +12356,14 @@
},
"@webpack-cli/configtest": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/configtest/-/configtest-1.1.1.tgz",
"integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==",
"dev": true,
"requires": {}
},
"@webpack-cli/info": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/info/-/info-1.4.1.tgz",
"integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==",
"dev": true,
"requires": {
@@ -12702,32 +12372,26 @@
},
"@webpack-cli/serve": {
"version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@webpack-cli/serve/-/serve-1.6.1.tgz",
"integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==",
"dev": true,
"requires": {}
},
"@xtuc/ieee754": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true
},
"@xtuc/long": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
- "dev": true
- },
"accepts": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"requires": {
"mime-types": "~2.1.34",
@@ -12736,33 +12400,33 @@
},
"acorn": {
"version": "8.7.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn/-/acorn-8.7.0.tgz",
"integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true
},
"acorn-import-assertions": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true,
"requires": {}
},
"acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"requires": {}
},
"acorn-walk": {
"version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
"dev": true
},
"agent-base": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
"requires": {
@@ -12771,7 +12435,7 @@
},
"ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
@@ -12783,32 +12447,25 @@
},
"ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
"requires": {}
},
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true,
- "optional": true
- },
"ansi-colors": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-colors/-/ansi-colors-4.1.1.tgz",
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true
},
"ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
@@ -12816,7 +12473,7 @@
},
"anymatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"requires": {
"normalize-path": "^3.0.0",
@@ -12825,19 +12482,19 @@
},
"argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"aria-query": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/aria-query/-/aria-query-5.0.0.tgz",
"integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==",
"dev": true
},
"array-includes": {
"version": "3.1.4",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array-includes/-/array-includes-3.1.4.tgz",
"integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
"dev": true,
"requires": {
@@ -12850,13 +12507,13 @@
},
"array-union": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true
},
"array.prototype.flatmap": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
"integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
"dev": true,
"requires": {
@@ -12868,25 +12525,19 @@
},
"assertion-error": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/assertion-error/-/assertion-error-1.1.0.tgz",
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true
},
"ast-types-flow": {
"version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
"integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
"dev": true
},
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
"autoprefixer": {
"version": "10.4.4",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/autoprefixer/-/autoprefixer-10.4.4.tgz",
"integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==",
"dev": true,
"requires": {
@@ -12900,25 +12551,25 @@
},
"available-typed-arrays": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true
},
"axe-core": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axe-core/-/axe-core-4.4.1.tgz",
"integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==",
"dev": true
},
"axobject-query": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
"dev": true
},
"babel-eslint": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-eslint/-/babel-eslint-10.1.0.tgz",
"integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
"dev": true,
"requires": {
@@ -12932,7 +12583,7 @@
"dependencies": {
"eslint-visitor-keys": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true
}
@@ -12940,7 +12591,7 @@
},
"babel-loader": {
"version": "8.2.5",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-loader/-/babel-loader-8.2.5.tgz",
"integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==",
"dev": true,
"requires": {
@@ -12952,7 +12603,7 @@
},
"babel-plugin-dynamic-import-node": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
"integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
"dev": true,
"requires": {
@@ -12961,7 +12612,7 @@
},
"babel-plugin-macros": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
"integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
"requires": {
"@babel/runtime": "^7.7.2",
@@ -12971,7 +12622,7 @@
},
"babel-plugin-polyfill-corejs2": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
"integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
"dev": true,
"requires": {
@@ -12982,7 +12633,7 @@
},
"babel-plugin-polyfill-corejs3": {
"version": "0.5.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
"integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
"dev": true,
"requires": {
@@ -12992,7 +12643,7 @@
},
"babel-plugin-polyfill-regenerator": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
"integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
"dev": true,
"requires": {
@@ -13001,34 +12652,34 @@
},
"balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true
},
"base64id": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
},
"big.js": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true
},
"binary-extensions": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
},
"bl": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"requires": {
@@ -13039,7 +12690,7 @@
},
"body-parser": {
"version": "1.20.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/body-parser/-/body-parser-1.20.0.tgz",
"integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
"requires": {
"bytes": "3.1.2",
@@ -13058,7 +12709,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
@@ -13066,20 +12717,20 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
@@ -13088,7 +12739,7 @@
},
"braces": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"requires": {
"fill-range": "^7.0.1"
@@ -13096,13 +12747,13 @@
},
"browser-stdout": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/browser-stdout/-/browser-stdout-1.3.1.tgz",
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
"browserslist": {
"version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/browserslist/-/browserslist-4.20.2.tgz",
"integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
"requires": {
"caniuse-lite": "^1.0.30001317",
@@ -13114,7 +12765,7 @@
},
"buffer": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"requires": {
@@ -13124,24 +12775,24 @@
},
"buffer-crc32": {
"version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
"buffer-from": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
"bytes": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
},
"call-bind": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"function-bind": "^1.1.1",
@@ -13150,12 +12801,12 @@
},
"callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"camel-case": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/camel-case/-/camel-case-4.1.2.tgz",
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
"dev": true,
"requires": {
@@ -13165,18 +12816,18 @@
},
"camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001332",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz",
"integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw=="
},
"chai": {
"version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai/-/chai-4.3.6.tgz",
"integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
"requires": {
@@ -13191,21 +12842,21 @@
},
"chai-dom": {
"version": "1.11.0",
- "resolved": "https://registry.npmjs.org/chai-dom/-/chai-dom-1.11.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai-dom/-/chai-dom-1.11.0.tgz",
"integrity": "sha512-ZzGlEfk1UhHH5+N0t9bDqstOxPEXmn3EyXvtsok5rfXVDOFDJbHVy12rED6ZwkJAUDs2w7/Da4Hlq2LB63kltg==",
"dev": true,
"requires": {}
},
"chai-string": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chai-string/-/chai-string-1.5.0.tgz",
"integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==",
"dev": true,
"requires": {}
},
"chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
@@ -13215,20 +12866,20 @@
"dependencies": {
"escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
}
}
},
"charcodes": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/charcodes/-/charcodes-0.2.0.tgz",
"integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==",
"dev": true
},
"chart.js": {
"version": "2.9.4",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chart.js/-/chart.js-2.9.4.tgz",
"integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==",
"requires": {
"chartjs-color": "^2.1.0",
@@ -13237,7 +12888,7 @@
},
"chartjs-color": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chartjs-color/-/chartjs-color-2.4.1.tgz",
"integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
"requires": {
"chartjs-color-string": "^0.6.0",
@@ -13246,7 +12897,7 @@
},
"chartjs-color-string": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
"integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
"requires": {
"color-name": "^1.0.0"
@@ -13254,13 +12905,13 @@
},
"check-error": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/check-error/-/check-error-1.0.2.tgz",
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
"dev": true
},
"chokidar": {
"version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"requires": {
"anymatch": "~3.1.2",
@@ -13275,7 +12926,7 @@
"dependencies": {
"glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"requires": {
"is-glob": "^4.0.1"
@@ -13285,26 +12936,26 @@
},
"chownr": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
"chrome-trace-event": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true
},
"circular-dependency-plugin": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
"integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
"dev": true,
"requires": {}
},
"clean-css": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clean-css/-/clean-css-5.3.0.tgz",
"integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==",
"dev": true,
"requires": {
@@ -13313,7 +12964,7 @@
"dependencies": {
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
@@ -13321,7 +12972,7 @@
},
"cliui": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"requires": {
"string-width": "^4.2.0",
@@ -13331,7 +12982,7 @@
},
"clone-deep": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clone-deep/-/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
"requires": {
@@ -13342,12 +12993,12 @@
},
"clsx": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/clsx/-/clsx-1.1.1.tgz",
"integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
},
"color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
@@ -13355,47 +13006,47 @@
"dependencies": {
"color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
}
}
},
"color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"colorette": {
"version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/colorette/-/colorette-2.0.16.tgz",
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"commander": {
"version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-8.3.0.tgz",
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
"dev": true
},
"commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"component-emitter": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/component-emitter/-/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
},
"concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"connect": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/connect/-/connect-3.7.0.tgz",
"integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
"requires": {
"debug": "2.6.9",
@@ -13406,7 +13057,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
@@ -13414,19 +13065,19 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"content-type": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"convert-source-map": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/convert-source-map/-/convert-source-map-1.8.0.tgz",
"integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
"requires": {
"safe-buffer": "~5.1.1"
@@ -13434,12 +13085,12 @@
},
"cookie": {
"version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
},
"core-js-compat": {
"version": "3.22.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/core-js-compat/-/core-js-compat-3.22.1.tgz",
"integrity": "sha512-CWbNqTluLMvZg1cjsQUbGiCM91dobSHKfDIyCoxuqxthdjGuUlaMbCsSehP3CBiVvG0C7P6UIrC1v0hgFE75jw==",
"dev": true,
"requires": {
@@ -13449,7 +13100,7 @@
"dependencies": {
"semver": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true
}
@@ -13457,13 +13108,13 @@
},
"core-js-pure": {
"version": "3.22.1",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/core-js-pure/-/core-js-pure-3.22.1.tgz",
"integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==",
"dev": true
},
"cors": {
"version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
"requires": {
"object-assign": "^4",
@@ -13472,7 +13123,7 @@
},
"cosmiconfig": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
"integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
"requires": {
"@types/parse-json": "^4.0.0",
@@ -13484,7 +13135,7 @@
},
"cross-fetch": {
"version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cross-fetch/-/cross-fetch-3.1.5.tgz",
"integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
"dev": true,
"requires": {
@@ -13493,7 +13144,7 @@
},
"cross-spawn": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
@@ -13504,7 +13155,7 @@
},
"css-loader": {
"version": "6.7.1",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-loader/-/css-loader-6.7.1.tgz",
"integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==",
"dev": true,
"requires": {
@@ -13520,7 +13171,7 @@
"dependencies": {
"semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
@@ -13531,7 +13182,7 @@
},
"css-select": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"dev": true,
"requires": {
@@ -13544,7 +13195,7 @@
},
"css-vendor": {
"version": "2.0.8",
- "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-vendor/-/css-vendor-2.0.8.tgz",
"integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
"requires": {
"@babel/runtime": "^7.8.3",
@@ -13553,45 +13204,45 @@
},
"css-what": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/css-what/-/css-what-6.1.0.tgz",
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true
},
"cssesc": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true
},
"csstype": {
"version": "3.0.11",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/csstype/-/csstype-3.0.11.tgz",
"integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
},
"custom-event": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/custom-event/-/custom-event-1.0.1.tgz",
"integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU="
},
"damerau-levenshtein": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
"date-format": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/date-format/-/date-format-4.0.7.tgz",
"integrity": "sha512-k5xqlzDGIfv2N/DHR/BR8Kc4N9CRy9ReuDkmdxeX/jNfit94QXd36emWMm40ZOEDKNm/c91yV9EO3uGPkR7wWQ=="
},
"debounce": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debounce/-/debounce-1.2.1.tgz",
"integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
},
"debug": {
"version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
@@ -13599,13 +13250,13 @@
},
"decamelize": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/decamelize/-/decamelize-4.0.0.tgz",
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true
},
"deep-eql": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-eql/-/deep-eql-3.0.1.tgz",
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
"dev": true,
"requires": {
@@ -13614,7 +13265,7 @@
},
"deep-equal": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-equal/-/deep-equal-2.0.5.tgz",
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
"dev": true,
"requires": {
@@ -13637,13 +13288,13 @@
},
"deep-is": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"define-properties": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/define-properties/-/define-properties-1.1.4.tgz",
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"requires": {
@@ -13653,33 +13304,33 @@
},
"depd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
},
"destroy": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
},
"devtools-protocol": {
"version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
"integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
"dev": true
},
"di": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/di/-/di-0.0.1.tgz",
"integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw="
},
"diff": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/diff/-/diff-5.0.0.tgz",
"integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w=="
},
"dir-glob": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dir-glob/-/dir-glob-3.0.1.tgz",
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
"requires": {
@@ -13688,7 +13339,7 @@
},
"doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
@@ -13697,13 +13348,13 @@
},
"dom-accessibility-api": {
"version": "0.5.13",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz",
"integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==",
"dev": true
},
"dom-converter": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-converter/-/dom-converter-0.2.0.tgz",
"integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
"requires": {
@@ -13712,7 +13363,7 @@
},
"dom-helpers": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"requires": {
"@babel/runtime": "^7.8.7",
@@ -13721,7 +13372,7 @@
},
"dom-serialize": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-serialize/-/dom-serialize-2.2.1.tgz",
"integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
"requires": {
"custom-event": "~1.0.0",
@@ -13732,7 +13383,7 @@
},
"dom-serializer": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"dev": true,
"requires": {
@@ -13743,13 +13394,13 @@
},
"domelementtype": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"dev": true
},
"domhandler": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"dev": true,
"requires": {
@@ -13758,12 +13409,12 @@
},
"dompurify": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dompurify/-/dompurify-2.3.6.tgz",
"integrity": "sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg=="
},
"domutils": {
"version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"dev": true,
"requires": {
@@ -13774,7 +13425,7 @@
},
"dot-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/dot-case/-/dot-case-3.0.4.tgz",
"integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
"dev": true,
"requires": {
@@ -13784,40 +13435,40 @@
},
"duplexer": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true
},
"ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
"version": "1.4.115",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.115.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/electron-to-chromium/-/electron-to-chromium-1.4.115.tgz",
"integrity": "sha512-yy1W7cTcreskCWSRTtvp8CNLEci3uYBn5s1U4IytDz7v485iLVPh4QwFuSCavsFbxRLVvwnHNXEFIDShrk/UnQ=="
},
"emoji-regex": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
"emojis-list": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
},
"encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"requires": {
@@ -13826,7 +13477,7 @@
},
"engine.io": {
"version": "6.1.3",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/engine.io/-/engine.io-6.1.3.tgz",
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==",
"requires": {
"@types/cookie": "^0.4.1",
@@ -13843,7 +13494,7 @@
"dependencies": {
"ws": {
"version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"requires": {}
}
@@ -13851,7 +13502,7 @@
},
"engine.io-parser": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==",
"requires": {
"@socket.io/base64-arraybuffer": "~1.0.2"
@@ -13859,7 +13510,7 @@
},
"enhanced-resolve": {
"version": "5.9.3",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
"integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
"dev": true,
"requires": {
@@ -13869,24 +13520,24 @@
},
"ent": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ent/-/ent-2.2.0.tgz",
"integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
},
"entities": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"dev": true
},
"envinfo": {
"version": "7.8.1",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/envinfo/-/envinfo-7.8.1.tgz",
"integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
"dev": true
},
"error-ex": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"requires": {
"is-arrayish": "^0.2.1"
@@ -13894,7 +13545,7 @@
},
"es-abstract": {
"version": "1.19.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-abstract/-/es-abstract-1.19.5.tgz",
"integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==",
"dev": true,
"requires": {
@@ -13922,7 +13573,7 @@
},
"es-get-iterator": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
"integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
"dev": true,
"requires": {
@@ -13938,13 +13589,13 @@
},
"es-module-lexer": {
"version": "0.9.3",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
"dev": true
},
"es-shim-unscopables": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
"integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
"dev": true,
"requires": {
@@ -13953,7 +13604,7 @@
},
"es-to-primitive": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"requires": {
@@ -13964,92 +13615,22 @@
},
"escalade": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
},
"escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
},
- "escodegen": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
- "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
- "dev": true,
- "requires": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "source-map": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- }
- }
- },
"eslint": {
"version": "8.13.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint/-/eslint-8.13.0.tgz",
"integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==",
"dev": true,
"requires": {
@@ -14092,7 +13673,7 @@
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
@@ -14101,7 +13682,7 @@
},
"chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
@@ -14111,7 +13692,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -14120,7 +13701,7 @@
},
"eslint-scope": {
"version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-scope/-/eslint-scope-7.1.1.tgz",
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"requires": {
@@ -14130,7 +13711,7 @@
},
"globals": {
"version": "13.13.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-13.13.0.tgz",
"integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"requires": {
@@ -14139,13 +13720,13 @@
},
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -14156,21 +13737,21 @@
},
"eslint-config-google": {
"version": "0.14.0",
- "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
"integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
"dev": true,
"requires": {}
},
"eslint-config-prettier": {
"version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
"dev": true,
"requires": {}
},
"eslint-plugin-css-modules": {
"version": "2.11.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-css-modules/-/eslint-plugin-css-modules-2.11.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-css-modules/-/eslint-plugin-css-modules-2.11.0.tgz",
"integrity": "sha512-CLvQvJOMlCywZzaI4HVu7QH/ltgNXvCg7giJGiE+sA9wh5zQ+AqTgftAzrERV22wHe1p688wrU/Zwxt1Ry922w==",
"dev": true,
"requires": {
@@ -14180,7 +13761,7 @@
},
"eslint-plugin-jsx-a11y": {
"version": "6.5.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
"integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
"dev": true,
"requires": {
@@ -14200,7 +13781,7 @@
"dependencies": {
"aria-query": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
"dev": true,
"requires": {
@@ -14212,7 +13793,7 @@
},
"eslint-plugin-react": {
"version": "7.29.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
"integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
"dev": true,
"requires": {
@@ -14234,7 +13815,7 @@
"dependencies": {
"doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"requires": {
@@ -14243,7 +13824,7 @@
},
"resolve": {
"version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve/-/resolve-2.0.0-next.3.tgz",
"integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
"dev": true,
"requires": {
@@ -14255,7 +13836,7 @@
},
"eslint-scope": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"requires": {
@@ -14265,7 +13846,7 @@
"dependencies": {
"estraverse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true
}
@@ -14273,7 +13854,7 @@
},
"eslint-utils": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-utils/-/eslint-utils-3.0.0.tgz",
"integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
"requires": {
@@ -14282,7 +13863,7 @@
"dependencies": {
"eslint-visitor-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true
}
@@ -14290,13 +13871,13 @@
},
"eslint-visitor-keys": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true
},
"espree": {
"version": "9.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/espree/-/espree-9.3.1.tgz",
"integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
"requires": {
@@ -14305,15 +13886,9 @@
"eslint-visitor-keys": "^3.3.0"
}
},
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
"esquery": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esquery/-/esquery-1.4.0.tgz",
"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
"dev": true,
"requires": {
@@ -14322,7 +13897,7 @@
},
"esrecurse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"requires": {
@@ -14331,30 +13906,30 @@
},
"estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true
},
"esutils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
"eventemitter3": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
"events": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true
},
"execa": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/execa/-/execa-5.1.1.tgz",
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
"requires": {
@@ -14371,7 +13946,7 @@
"dependencies": {
"get-stream": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true
}
@@ -14379,12 +13954,12 @@
},
"extend": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extract-zip": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
"requires": {
@@ -14396,13 +13971,13 @@
},
"fast-deep-equal": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"fast-glob": {
"version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-glob/-/fast-glob-3.2.11.tgz",
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
"dev": true,
"requires": {
@@ -14415,7 +13990,7 @@
"dependencies": {
"glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
@@ -14426,25 +14001,25 @@
},
"fast-json-stable-stringify": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"fastest-levenshtein": {
"version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
"integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
"dev": true
},
"fastq": {
"version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fastq/-/fastq-1.13.0.tgz",
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
"dev": true,
"requires": {
@@ -14453,7 +14028,7 @@
},
"fd-slicer": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
"requires": {
@@ -14462,7 +14037,7 @@
},
"file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
"requires": {
@@ -14471,7 +14046,7 @@
},
"fill-range": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"requires": {
"to-regex-range": "^5.0.1"
@@ -14479,7 +14054,7 @@
},
"finalhandler": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"debug": "2.6.9",
@@ -14493,7 +14068,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
@@ -14501,12 +14076,12 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"on-finished": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"ee-first": "1.1.1"
@@ -14516,7 +14091,7 @@
},
"find-cache-dir": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
"integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
"dev": true,
"requires": {
@@ -14527,12 +14102,12 @@
},
"find-root": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-root/-/find-root-1.1.0.tgz",
"integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
},
"find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"requires": {
@@ -14542,13 +14117,13 @@
},
"flat": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true
},
"flat-cache": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flat-cache/-/flat-cache-3.0.4.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"dev": true,
"requires": {
@@ -14558,35 +14133,35 @@
},
"flatted": {
"version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/flatted/-/flatted-3.2.5.tgz",
"integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
},
"follow-redirects": {
"version": "1.14.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/follow-redirects/-/follow-redirects-1.14.9.tgz",
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
},
"foreach": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/foreach/-/foreach-2.0.5.tgz",
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
"dev": true
},
"fraction.js": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
"dev": true
},
"fs-constants": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true
},
"fs-extra": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"requires": {
"graceful-fs": "^4.2.0",
@@ -14596,51 +14171,51 @@
},
"fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"optional": true
},
"function-bind": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"functional-red-black-tree": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
"functions-have-names": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true
},
"gensync": {
"version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
},
"get-caller-file": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-func-name": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-func-name/-/get-func-name-2.0.0.tgz",
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
"get-intrinsic": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"requires": {
"function-bind": "^1.1.1",
@@ -14650,7 +14225,7 @@
},
"get-stream": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"requires": {
@@ -14659,7 +14234,7 @@
},
"get-symbol-description": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"dev": true,
"requires": {
@@ -14669,7 +14244,7 @@
},
"glob": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"requires": {
"fs.realpath": "^1.0.0",
@@ -14682,7 +14257,7 @@
},
"glob-parent": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"requires": {
@@ -14691,18 +14266,18 @@
},
"glob-to-regexp": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
"globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
"globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/globby/-/globby-11.1.0.tgz",
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
"requires": {
@@ -14716,7 +14291,7 @@
},
"gonzales-pe": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
"integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
"dev": true,
"requires": {
@@ -14725,48 +14300,27 @@
},
"graceful-fs": {
"version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"growl": {
"version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/growl/-/growl-1.10.5.tgz",
"integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true
},
"gzip-size": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/gzip-size/-/gzip-size-6.0.0.tgz",
"integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
"requires": {
"duplexer": "^0.1.2"
}
},
- "handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
- "wordwrap": "^1.0.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
"has": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
@@ -14774,18 +14328,18 @@
},
"has-bigints": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-bigints/-/has-bigints-1.0.2.tgz",
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true
},
"has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"has-property-descriptors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
"dev": true,
"requires": {
@@ -14794,12 +14348,12 @@
},
"has-symbols": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
"has-tostringtag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dev": true,
"requires": {
@@ -14808,13 +14362,13 @@
},
"he": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"hoist-non-react-statics": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"requires": {
"react-is": "^16.7.0"
@@ -14822,20 +14376,20 @@
"dependencies": {
"react-is": {
"version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
"html-escaper": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-escaper/-/html-escaper-2.0.2.tgz",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
"html-minifier-terser": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
"integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
"dev": true,
"requires": {
@@ -14850,7 +14404,7 @@
},
"html-webpack-plugin": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz",
"integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==",
"dev": true,
"requires": {
@@ -14863,7 +14417,7 @@
},
"htmlparser2": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/htmlparser2/-/htmlparser2-6.1.0.tgz",
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"dev": true,
"requires": {
@@ -14875,7 +14429,7 @@
},
"http-errors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"requires": {
"depd": "2.0.0",
@@ -14887,14 +14441,14 @@
"dependencies": {
"statuses": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
}
}
},
"http-proxy": {
"version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"requires": {
"eventemitter3": "^4.0.0",
@@ -14904,7 +14458,7 @@
},
"https-proxy-agent": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"dev": true,
"requires": {
@@ -14914,18 +14468,18 @@
},
"human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true
},
"hyphenate-style-name": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
},
"iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
@@ -14933,26 +14487,26 @@
},
"icss-utils": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"dev": true,
"requires": {}
},
"ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true
},
"ignore": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ignore/-/ignore-5.2.0.tgz",
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true
},
"import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"requires": {
"parent-module": "^1.0.0",
@@ -14961,7 +14515,7 @@
},
"import-local": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/import-local/-/import-local-3.1.0.tgz",
"integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
"dev": true,
"requires": {
@@ -14971,13 +14525,13 @@
},
"imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
@@ -14986,12 +14540,12 @@
},
"inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"internal-slot": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/internal-slot/-/internal-slot-1.0.3.tgz",
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
"dev": true,
"requires": {
@@ -15002,13 +14556,13 @@
},
"interpret": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true
},
"is-arguments": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"dev": true,
"requires": {
@@ -15018,12 +14572,12 @@
},
"is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
"is-bigint": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-bigint/-/is-bigint-1.0.4.tgz",
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
"requires": {
@@ -15032,7 +14586,7 @@
},
"is-binary-path": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"requires": {
"binary-extensions": "^2.0.0"
@@ -15040,7 +14594,7 @@
},
"is-boolean-object": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
"requires": {
@@ -15050,13 +14604,13 @@
},
"is-callable": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
"dev": true
},
"is-core-module": {
"version": "2.9.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-core-module/-/is-core-module-2.9.0.tgz",
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
"requires": {
"has": "^1.0.3"
@@ -15064,7 +14618,7 @@
},
"is-date-object": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
"requires": {
@@ -15073,17 +14627,17 @@
},
"is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
"is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"requires": {
"is-extglob": "^2.1.1"
@@ -15091,29 +14645,29 @@
},
"is-in-browser": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-in-browser/-/is-in-browser-1.1.3.tgz",
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
},
"is-map": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-map/-/is-map-2.0.2.tgz",
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
"dev": true
},
"is-negative-zero": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true
},
"is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
},
"is-number-object": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-number-object/-/is-number-object-1.0.7.tgz",
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"requires": {
@@ -15122,13 +14676,13 @@
},
"is-plain-obj": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
"integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true
},
"is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
"requires": {
@@ -15137,7 +14691,7 @@
},
"is-regex": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
@@ -15147,13 +14701,13 @@
},
"is-set": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-set/-/is-set-2.0.2.tgz",
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
"dev": true
},
"is-shared-array-buffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
"dev": true,
"requires": {
@@ -15162,13 +14716,13 @@
},
"is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true
},
"is-string": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
@@ -15177,7 +14731,7 @@
},
"is-symbol": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
"requires": {
@@ -15186,7 +14740,7 @@
},
"is-typed-array": {
"version": "1.1.8",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-typed-array/-/is-typed-array-1.1.8.tgz",
"integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
"dev": true,
"requires": {
@@ -15199,19 +14753,19 @@
},
"is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true
},
"is-weakmap": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakmap/-/is-weakmap-2.0.1.tgz",
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
"dev": true
},
"is-weakref": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
"requires": {
@@ -15220,7 +14774,7 @@
},
"is-weakset": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/is-weakset/-/is-weakset-2.0.2.tgz",
"integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
"dev": true,
"requires": {
@@ -15230,130 +14784,36 @@
},
"isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true
},
"isbinaryfile": {
"version": "4.0.10",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
"integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="
},
"isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
- "istanbul": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
- "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
- "dev": true,
- "requires": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- }
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
"istanbul-lib-coverage": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
"integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true
},
"istanbul-lib-instrument": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
"integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==",
"dev": true,
"requires": {
@@ -15366,7 +14826,7 @@
},
"istanbul-lib-report": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
"integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
"dev": true,
"requires": {
@@ -15377,13 +14837,13 @@
"dependencies": {
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -15394,7 +14854,7 @@
},
"istanbul-lib-source-maps": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
"integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
"requires": {
@@ -15405,7 +14865,7 @@
"dependencies": {
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
@@ -15413,7 +14873,7 @@
},
"istanbul-reports": {
"version": "3.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
"integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
"dev": true,
"requires": {
@@ -15423,7 +14883,7 @@
},
"jest-worker": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
"requires": {
@@ -15434,13 +14894,13 @@
"dependencies": {
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
@@ -15451,12 +14911,12 @@
},
"js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"requires": {
@@ -15465,40 +14925,40 @@
},
"jsesc": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
"json-parse-better-errors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
"json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
"json5": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/json5/-/json5-2.2.1.tgz",
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
},
"jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"requires": {
"graceful-fs": "^4.1.6",
@@ -15507,7 +14967,7 @@
},
"jss": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss/-/jss-10.9.0.tgz",
"integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15518,7 +14978,7 @@
},
"jss-plugin-camel-case": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz",
"integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15528,7 +14988,7 @@
},
"jss-plugin-default-unit": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz",
"integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15537,7 +14997,7 @@
},
"jss-plugin-global": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz",
"integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15546,7 +15006,7 @@
},
"jss-plugin-nested": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz",
"integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15556,7 +15016,7 @@
},
"jss-plugin-props-sort": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz",
"integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15565,7 +15025,7 @@
},
"jss-plugin-rule-value-function": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz",
"integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15575,7 +15035,7 @@
},
"jss-plugin-vendor-prefixer": {
"version": "10.9.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz",
"integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==",
"requires": {
"@babel/runtime": "^7.3.1",
@@ -15585,7 +15045,7 @@
},
"jsx-ast-utils": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz",
"integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==",
"dev": true,
"requires": {
@@ -15595,13 +15055,13 @@
},
"just-extend": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/just-extend/-/just-extend-4.2.1.tgz",
"integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
"karma": {
"version": "6.3.19",
- "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.19.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma/-/karma-6.3.19.tgz",
"integrity": "sha512-NDhWckzES/Y9xMiddyU1RzaKL76/scCsu8Mp0vR0Z3lQRvC3p72+Ab4ppoxs36S9tyPNX5V48yvaV++RNEBPZw==",
"requires": {
"@colors/colors": "1.5.0",
@@ -15632,14 +15092,14 @@
"dependencies": {
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
"karma-chrome-launcher": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz",
"integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==",
"dev": true,
"requires": {
@@ -15648,7 +15108,7 @@
"dependencies": {
"which": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
@@ -15659,7 +15119,7 @@
},
"karma-coverage": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-coverage/-/karma-coverage-2.2.0.tgz",
"integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==",
"dev": true,
"requires": {
@@ -15673,7 +15133,7 @@
},
"karma-mocha": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-mocha/-/karma-mocha-2.0.1.tgz",
"integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==",
"dev": true,
"requires": {
@@ -15682,7 +15142,7 @@
},
"karma-mocha-reporter": {
"version": "2.2.5",
- "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
"integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=",
"dev": true,
"requires": {
@@ -15693,13 +15153,13 @@
"dependencies": {
"ansi-regex": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-regex/-/ansi-regex-3.0.1.tgz",
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true
},
"strip-ansi": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
@@ -15708,26 +15168,16 @@
}
}
},
- "karma-parallel": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/karma-parallel/-/karma-parallel-0.3.1.tgz",
- "integrity": "sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw==",
- "dev": true,
- "requires": {
- "istanbul": "^0.4.5",
- "lodash": "^4.17.11"
- }
- },
"karma-sinon": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-sinon/-/karma-sinon-1.0.5.tgz",
"integrity": "sha1-TjRD8oMP3s/2JNN0cWPxIX2qKpo=",
"dev": true,
"requires": {}
},
"karma-sourcemap-loader": {
"version": "0.3.8",
- "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz",
"integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==",
"dev": true,
"requires": {
@@ -15736,7 +15186,7 @@
},
"karma-webpack": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/karma-webpack/-/karma-webpack-5.0.0.tgz",
"integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==",
"dev": true,
"requires": {
@@ -15747,25 +15197,25 @@
},
"kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
"klona": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/klona/-/klona-2.0.5.tgz",
"integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
"dev": true
},
"language-subtag-registry": {
"version": "0.3.21",
- "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz",
"integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==",
"dev": true
},
"language-tags": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/language-tags/-/language-tags-1.0.5.tgz",
"integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=",
"dev": true,
"requires": {
@@ -15774,7 +15224,7 @@
},
"levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"requires": {
@@ -15784,12 +15234,12 @@
},
"lines-and-columns": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
"lit-element": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lit-element/-/lit-element-2.5.1.tgz",
"integrity": "sha512-ogu7PiJTA33bEK0xGu1dmaX5vhcRjBXCFexPja0e7P7jqLhTpNKYRPmE+GmiCaRVAbiQKGkUgkh/i6+bh++dPQ==",
"requires": {
"lit-html": "^1.1.1"
@@ -15797,18 +15247,18 @@
},
"lit-html": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lit-html/-/lit-html-1.4.1.tgz",
"integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA=="
},
"loader-runner": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loader-runner/-/loader-runner-4.3.0.tgz",
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true
},
"loader-utils": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"dev": true,
"requires": {
@@ -15819,7 +15269,7 @@
},
"locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"requires": {
@@ -15828,30 +15278,30 @@
},
"lodash": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.debounce": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
"lodash.get": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
"lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
"log-symbols": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log-symbols/-/log-symbols-2.2.0.tgz",
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dev": true,
"requires": {
@@ -15860,7 +15310,7 @@
},
"log4js": {
"version": "6.4.5",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log4js/-/log4js-6.4.5.tgz",
"integrity": "sha512-43RJcYZ7nfUxpPO2woTl8CJ0t5+gucLJZ43mtp2PlInT+LygCp/bl6hNJtKulCJ+++fQsjIv4EO3Mp611PfeLQ==",
"requires": {
"date-format": "^4.0.7",
@@ -15872,7 +15322,7 @@
},
"loose-envify": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -15880,7 +15330,7 @@
},
"loupe": {
"version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/loupe/-/loupe-2.3.4.tgz",
"integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
"dev": true,
"requires": {
@@ -15889,7 +15339,7 @@
},
"lower-case": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lower-case/-/lower-case-2.0.2.tgz",
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
"dev": true,
"requires": {
@@ -15898,7 +15348,7 @@
},
"lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
@@ -15907,13 +15357,13 @@
},
"lz-string": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/lz-string/-/lz-string-1.4.4.tgz",
"integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=",
"dev": true
},
"make-dir": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"requires": {
@@ -15922,29 +15372,29 @@
},
"marked": {
"version": "4.0.14",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.14.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/marked/-/marked-4.0.14.tgz",
"integrity": "sha512-HL5sSPE/LP6U9qKgngIIPTthuxC0jrfxpYMZ3LdGDD3vTnLs59m2Z7r6+LNDR3ToqEQdkKd6YaaEfJhodJmijQ=="
},
"media-typer": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
"merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true
},
"micromatch": {
"version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"requires": {
@@ -15954,17 +15404,17 @@
},
"mime": {
"version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
},
"mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"mime-db": "1.52.0"
@@ -15972,13 +15422,13 @@
},
"mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
"minimatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
@@ -15986,12 +15436,12 @@
},
"minimist": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"mkdirp": {
"version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"requires": {
"minimist": "^1.2.6"
@@ -15999,13 +15449,13 @@
},
"mkdirp-classic": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
"mocha": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mocha/-/mocha-9.2.2.tgz",
"integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
"dev": true,
"requires": {
@@ -16037,7 +15487,7 @@
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
@@ -16046,7 +15496,7 @@
},
"chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
@@ -16056,7 +15506,7 @@
"dependencies": {
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -16067,7 +15517,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -16076,7 +15526,7 @@
},
"debug": {
"version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/debug/-/debug-4.3.3.tgz",
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"requires": {
@@ -16085,7 +15535,7 @@
"dependencies": {
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
@@ -16093,13 +15543,13 @@
},
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"log-symbols": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
"requires": {
@@ -16109,7 +15559,7 @@
},
"minimatch": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/minimatch/-/minimatch-4.2.1.tgz",
"integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
"dev": true,
"requires": {
@@ -16118,13 +15568,13 @@
},
"ms": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
@@ -16135,51 +15585,51 @@
},
"moment": {
"version": "2.29.3",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/moment/-/moment-2.29.3.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
},
"mousetrap": {
"version": "1.6.5",
- "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mousetrap/-/mousetrap-1.6.5.tgz",
"integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA=="
},
"mrmime": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/mrmime/-/mrmime-1.0.0.tgz",
"integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==",
"dev": true
},
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"nanoid": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nanoid/-/nanoid-3.3.1.tgz",
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true
},
"natural-compare": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"negotiator": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
},
"neo-async": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"nise": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nise/-/nise-5.1.1.tgz",
"integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==",
"dev": true,
"requires": {
@@ -16192,13 +15642,13 @@
"dependencies": {
"isarray": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"path-to-regexp": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true,
"requires": {
@@ -16209,7 +15659,7 @@
},
"no-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/no-case/-/no-case-3.0.4.tgz",
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
"dev": true,
"requires": {
@@ -16219,7 +15669,7 @@
},
"node-fetch": {
"version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dev": true,
"requires": {
@@ -16228,32 +15678,23 @@
},
"node-releases": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/node-releases/-/node-releases-2.0.3.tgz",
"integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
},
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
"normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
},
"normalize-range": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/normalize-range/-/normalize-range-0.1.2.tgz",
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
"dev": true
},
"npm-run-path": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
"requires": {
@@ -16262,7 +15703,7 @@
},
"nth-check": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/nth-check/-/nth-check-2.0.1.tgz",
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
@@ -16271,17 +15712,17 @@
},
"object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-inspect": {
"version": "1.12.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
},
"object-is": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-is/-/object-is-1.1.5.tgz",
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dev": true,
"requires": {
@@ -16291,13 +15732,13 @@
},
"object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true
},
"object.assign": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.assign/-/object.assign-4.1.2.tgz",
"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
"dev": true,
"requires": {
@@ -16309,7 +15750,7 @@
},
"object.entries": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.entries/-/object.entries-1.1.5.tgz",
"integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"requires": {
@@ -16320,7 +15761,7 @@
},
"object.fromentries": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.fromentries/-/object.fromentries-2.0.5.tgz",
"integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
"dev": true,
"requires": {
@@ -16331,7 +15772,7 @@
},
"object.hasown": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.hasown/-/object.hasown-1.1.0.tgz",
"integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==",
"dev": true,
"requires": {
@@ -16341,7 +15782,7 @@
},
"object.values": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/object.values/-/object.values-1.1.5.tgz",
"integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
"dev": true,
"requires": {
@@ -16352,7 +15793,7 @@
},
"on-finished": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"requires": {
"ee-first": "1.1.1"
@@ -16360,7 +15801,7 @@
},
"once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
@@ -16368,7 +15809,7 @@
},
"onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"requires": {
@@ -16377,13 +15818,13 @@
},
"opener": {
"version": "1.5.2",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true
},
"optionator": {
"version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/optionator/-/optionator-0.9.1.tgz",
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"dev": true,
"requires": {
@@ -16397,7 +15838,7 @@
},
"p-limit": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"requires": {
@@ -16406,7 +15847,7 @@
},
"p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"requires": {
@@ -16415,13 +15856,13 @@
},
"p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
"page": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/page/-/page-1.11.6.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/page/-/page-1.11.6.tgz",
"integrity": "sha512-P6e2JfzkBrPeFCIPplLP7vDDiU84RUUZMrWdsH4ZBGJ8OosnwFkcUkBHp1DTIjuipLliw9yQn/ZJsXZvarsO+g==",
"requires": {
"path-to-regexp": "~1.2.1"
@@ -16429,7 +15870,7 @@
},
"param-case": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/param-case/-/param-case-3.0.4.tgz",
"integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
"dev": true,
"requires": {
@@ -16439,7 +15880,7 @@
},
"parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"requires": {
"callsites": "^3.0.0"
@@ -16447,7 +15888,7 @@
},
"parse-json": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -16458,12 +15899,12 @@
},
"parseurl": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"pascal-case": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pascal-case/-/pascal-case-3.1.2.tgz",
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
"dev": true,
"requires": {
@@ -16473,7 +15914,7 @@
},
"path": {
"version": "0.12.7",
- "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path/-/path-0.12.7.tgz",
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
"dev": true,
"requires": {
@@ -16483,29 +15924,29 @@
},
"path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
},
"path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"path-parse": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-to-regexp": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-to-regexp/-/path-to-regexp-1.2.1.tgz",
"integrity": "sha1-szcFwUAjTYc8hyHHuf2LVB7Tr/k=",
"requires": {
"isarray": "0.0.1"
@@ -16513,41 +15954,41 @@
"dependencies": {
"isarray": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
}
}
},
"path-type": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
},
"pathval": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pathval/-/pathval-1.1.1.tgz",
"integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true
},
"pend": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
"picocolors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
},
"pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pkg-dir/-/pkg-dir-4.2.0.tgz",
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"requires": {
@@ -16556,7 +15997,7 @@
"dependencies": {
"find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
@@ -16566,7 +16007,7 @@
},
"locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
@@ -16575,7 +16016,7 @@
},
"p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
@@ -16584,7 +16025,7 @@
},
"p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
@@ -16595,7 +16036,7 @@
},
"postcss": {
"version": "8.4.12",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"dev": true,
"requires": {
@@ -16606,7 +16047,7 @@
},
"postcss-loader": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-loader/-/postcss-loader-6.2.1.tgz",
"integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
"dev": true,
"requires": {
@@ -16617,7 +16058,7 @@
"dependencies": {
"cosmiconfig": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
"integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
"dev": true,
"requires": {
@@ -16630,7 +16071,7 @@
},
"semver": {
"version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
@@ -16641,14 +16082,14 @@
},
"postcss-modules-extract-imports": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
"dev": true,
"requires": {}
},
"postcss-modules-local-by-default": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
"integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
"dev": true,
"requires": {
@@ -16659,7 +16100,7 @@
},
"postcss-modules-scope": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
"integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
"dev": true,
"requires": {
@@ -16668,7 +16109,7 @@
},
"postcss-modules-values": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
"integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
"dev": true,
"requires": {
@@ -16677,7 +16118,7 @@
},
"postcss-selector-parser": {
"version": "6.0.10",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
"dev": true,
"requires": {
@@ -16687,25 +16128,25 @@
},
"postcss-value-parser": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
"prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true
},
"prettier": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prettier/-/prettier-2.6.2.tgz",
"integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==",
"dev": true
},
"pretty-error": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pretty-error/-/pretty-error-4.0.0.tgz",
"integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
"dev": true,
"requires": {
@@ -16715,7 +16156,7 @@
},
"pretty-format": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pretty-format/-/pretty-format-27.5.1.tgz",
"integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
"requires": {
@@ -16726,7 +16167,7 @@
"dependencies": {
"ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true
}
@@ -16734,19 +16175,19 @@
},
"process": {
"version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
},
"progress": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
"prop-types": {
"version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"requires": {
"loose-envify": "^1.4.0",
@@ -16756,20 +16197,20 @@
"dependencies": {
"react-is": {
"version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
"proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
"pump": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
@@ -16779,13 +16220,13 @@
},
"punycode": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"puppeteer": {
"version": "13.6.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/puppeteer/-/puppeteer-13.6.0.tgz",
"integrity": "sha512-EJXhTyY5bXNPLFXPGcY9JaF6EKJIX8ll8cGG3WUK+553Jx96oDf1cB+lkFOro9p0X16tY+9xx7zYWl+vnWgW2g==",
"dev": true,
"requires": {
@@ -16805,17 +16246,17 @@
},
"pwa-helpers": {
"version": "0.9.1",
- "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/pwa-helpers/-/pwa-helpers-0.9.1.tgz",
"integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA=="
},
"qjobs": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/qjobs/-/qjobs-1.2.0.tgz",
"integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg=="
},
"qs": {
"version": "6.10.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"requires": {
"side-channel": "^1.0.4"
@@ -16823,13 +16264,13 @@
},
"queue-microtask": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true
},
"randombytes": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
"requires": {
@@ -16838,12 +16279,12 @@
},
"range-parser": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"requires": {
"bytes": "3.1.2",
@@ -16854,7 +16295,7 @@
},
"react": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react/-/react-17.0.2.tgz",
"integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
"requires": {
"loose-envify": "^1.1.0",
@@ -16863,7 +16304,7 @@
},
"react-dom": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-dom/-/react-dom-17.0.2.tgz",
"integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
"requires": {
"loose-envify": "^1.1.0",
@@ -16873,12 +16314,12 @@
},
"react-is": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"react-redux": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-redux/-/react-redux-8.0.1.tgz",
"integrity": "sha512-LMZMsPY4DYdZfLJgd7i79n5Kps5N9XVLCJJeWAaPYTV+Eah2zTuBjTxKtNEbjiyitbq80/eIkm55CYSLqAub3w==",
"requires": {
"@babel/runtime": "^7.12.1",
@@ -16891,14 +16332,14 @@
"dependencies": {
"react-is": {
"version": "18.0.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-is/-/react-is-18.0.0.tgz",
"integrity": "sha512-yUcBYdBBbo3QiPsgYDcfQcIkGZHfxOaoE6HLSnr1sPzMhdyxusbfKOSUbSd/ocGi32dxcj366PsTj+5oggeKKw=="
}
}
},
"react-transition-group": {
"version": "4.4.2",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/react-transition-group/-/react-transition-group-4.4.2.tgz",
"integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==",
"requires": {
"@babel/runtime": "^7.5.5",
@@ -16909,7 +16350,7 @@
},
"readable-stream": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"requires": {
@@ -16920,7 +16361,7 @@
},
"readdirp": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"requires": {
"picomatch": "^2.2.1"
@@ -16928,7 +16369,7 @@
},
"rechoir": {
"version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rechoir/-/rechoir-0.7.1.tgz",
"integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"dev": true,
"requires": {
@@ -16937,7 +16378,7 @@
},
"redux": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/redux/-/redux-4.2.0.tgz",
"integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
"requires": {
"@babel/runtime": "^7.9.2"
@@ -16945,19 +16386,19 @@
},
"redux-thunk": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/redux-thunk/-/redux-thunk-2.4.1.tgz",
"integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==",
"requires": {}
},
"regenerate": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerate/-/regenerate-1.4.2.tgz",
"integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
"dev": true
},
"regenerate-unicode-properties": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
"integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
"dev": true,
"requires": {
@@ -16966,12 +16407,12 @@
},
"regenerator-runtime": {
"version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
},
"regenerator-transform": {
"version": "0.15.0",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
"integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
"dev": true,
"requires": {
@@ -16980,7 +16421,7 @@
},
"regexp.prototype.flags": {
"version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
"dev": true,
"requires": {
@@ -16991,13 +16432,13 @@
},
"regexpp": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexpp/-/regexpp-3.2.0.tgz",
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true
},
"regexpu-core": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regexpu-core/-/regexpu-core-5.0.1.tgz",
"integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==",
"dev": true,
"requires": {
@@ -17011,13 +16452,13 @@
},
"regjsgen": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regjsgen/-/regjsgen-0.6.0.tgz",
"integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
"dev": true
},
"regjsparser": {
"version": "0.8.4",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/regjsparser/-/regjsparser-0.8.4.tgz",
"integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
"dev": true,
"requires": {
@@ -17026,7 +16467,7 @@
"dependencies": {
"jsesc": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
}
@@ -17034,13 +16475,13 @@
},
"relateurl": {
"version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/relateurl/-/relateurl-0.2.7.tgz",
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true
},
"renderkid": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/renderkid/-/renderkid-3.0.0.tgz",
"integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
"dev": true,
"requires": {
@@ -17053,22 +16494,22 @@
},
"require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"requires-port": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
},
"reselect": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/reselect/-/reselect-4.1.5.tgz",
"integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ=="
},
"resolve": {
"version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve/-/resolve-1.22.0.tgz",
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
"requires": {
"is-core-module": "^2.8.1",
@@ -17078,7 +16519,7 @@
},
"resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
"integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
"requires": {
@@ -17087,7 +16528,7 @@
"dependencies": {
"resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
}
@@ -17095,23 +16536,23 @@
},
"resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
},
"reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true
},
"rfdc": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rfdc/-/rfdc-1.3.0.tgz",
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"requires": {
"glob": "^7.1.3"
@@ -17119,7 +16560,7 @@
},
"run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"requires": {
@@ -17128,17 +16569,17 @@
},
"safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"scheduler": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/scheduler/-/scheduler-0.20.2.tgz",
"integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
"requires": {
"loose-envify": "^1.1.0",
@@ -17147,7 +16588,7 @@
},
"schema-utils": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-2.7.1.tgz",
"integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
"dev": true,
"requires": {
@@ -17158,12 +16599,12 @@
},
"semver": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
},
"serialize-javascript": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
"requires": {
@@ -17172,12 +16613,12 @@
},
"setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"shallow-clone": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shallow-clone/-/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
"requires": {
@@ -17186,7 +16627,7 @@
},
"shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
@@ -17195,13 +16636,13 @@
},
"shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"side-channel": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
@@ -17211,13 +16652,13 @@
},
"signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"sinon": {
"version": "13.0.2",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/sinon/-/sinon-13.0.2.tgz",
"integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==",
"dev": true,
"requires": {
@@ -17231,13 +16672,13 @@
"dependencies": {
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -17248,7 +16689,7 @@
},
"sirv": {
"version": "1.0.19",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/sirv/-/sirv-1.0.19.tgz",
"integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
"dev": true,
"requires": {
@@ -17259,13 +16700,13 @@
},
"slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
"socket.io": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io/-/socket.io-4.4.1.tgz",
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==",
"requires": {
"accepts": "~1.3.4",
@@ -17278,12 +16719,12 @@
},
"socket.io-adapter": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ=="
},
"socket.io-parser": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
"requires": {
"@types/component-emitter": "^1.2.10",
@@ -17293,18 +16734,18 @@
},
"source-map": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
},
"source-map-js": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true
},
"source-map-support": {
"version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
"requires": {
@@ -17314,26 +16755,20 @@
"dependencies": {
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
"statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"streamroller": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/streamroller/-/streamroller-3.0.7.tgz",
"integrity": "sha512-kh68kwiDGuIPiPDWwRbEC5us+kfARP1e9AsQiaLaSqGrctOvMn0mtL8iNY3r4/o5nIoYi3gPI1jexguZsXDlxw==",
"requires": {
"date-format": "^4.0.7",
@@ -17343,7 +16778,7 @@
},
"string_decoder": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
"requires": {
@@ -17352,7 +16787,7 @@
"dependencies": {
"safe-buffer": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
}
@@ -17360,7 +16795,7 @@
},
"string-width": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
@@ -17370,14 +16805,14 @@
"dependencies": {
"emoji-regex": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
}
}
},
"string.prototype.matchall": {
"version": "4.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
"integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
"dev": true,
"requires": {
@@ -17393,7 +16828,7 @@
},
"string.prototype.trimend": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
"integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
"dev": true,
"requires": {
@@ -17403,7 +16838,7 @@
},
"string.prototype.trimstart": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
"integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
"dev": true,
"requires": {
@@ -17413,7 +16848,7 @@
},
"strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
@@ -17421,31 +16856,31 @@
},
"strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
"strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
"style-loader": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
"dev": true,
"requires": {}
},
"stylis": {
"version": "4.0.13",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/stylis/-/stylis-4.0.13.tgz",
"integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
},
"supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
@@ -17453,18 +16888,18 @@
},
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
},
"tapable": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true
},
"tar-fs": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tar-fs/-/tar-fs-2.1.1.tgz",
"integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
"dev": true,
"requires": {
@@ -17476,7 +16911,7 @@
},
"tar-stream": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"requires": {
@@ -17489,7 +16924,7 @@
},
"terser": {
"version": "5.12.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/terser/-/terser-5.12.1.tgz",
"integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==",
"dev": true,
"requires": {
@@ -17501,13 +16936,13 @@
"dependencies": {
"commander": {
"version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
"source-map": {
"version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
@@ -17515,7 +16950,7 @@
},
"terser-webpack-plugin": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz",
"integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==",
"dev": true,
"requires": {
@@ -17528,7 +16963,7 @@
"dependencies": {
"schema-utils": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"requires": {
@@ -17539,7 +16974,7 @@
},
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
@@ -17547,24 +16982,24 @@
},
"text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
"through": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"tiny-warning": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
"tmp": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tmp/-/tmp-0.2.1.tgz",
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"requires": {
"rimraf": "^3.0.0"
@@ -17572,12 +17007,12 @@
},
"to-fast-properties": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
},
"to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"requires": {
"is-number": "^7.0.0"
@@ -17585,30 +17020,30 @@
},
"toidentifier": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"totalist": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/totalist/-/totalist-1.1.0.tgz",
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
"dev": true
},
"tr46": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
"dev": true
},
"tslib": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
},
"tsutils": {
"version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tsutils/-/tsutils-3.21.0.tgz",
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"requires": {
@@ -17617,7 +17052,7 @@
"dependencies": {
"tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
}
@@ -17625,7 +17060,7 @@
},
"type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"requires": {
@@ -17634,19 +17069,19 @@
},
"type-detect": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true
},
"type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
},
"type-is": {
"version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"media-typer": "0.3.0",
@@ -17655,25 +17090,18 @@
},
"typescript": {
"version": "4.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/typescript/-/typescript-4.6.3.tgz",
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
"dev": true
},
"ua-parser-js": {
"version": "0.7.31",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
"integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ=="
},
- "uglify-js": {
- "version": "3.15.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz",
- "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==",
- "dev": true,
- "optional": true
- },
"unbox-primitive": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
"integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
"dev": true,
"requires": {
@@ -17685,7 +17113,7 @@
},
"unbzip2-stream": {
"version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
"integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
"dev": true,
"requires": {
@@ -17695,13 +17123,13 @@
},
"unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
"integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
"dev": true
},
"unicode-match-property-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
"integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
"requires": {
@@ -17711,29 +17139,29 @@
},
"unicode-match-property-value-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
"integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
"dev": true
},
"unicode-property-aliases-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
"integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
"dev": true
},
"universalify": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
},
"unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"requires": {
@@ -17742,13 +17170,13 @@
},
"use-sync-external-store": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz",
"integrity": "sha512-AFVsxg5GkFg8GDcxnl+Z0lMAz9rE8DGJCc28qnBuQF7lac57B5smLcT37aXpXIIPz75rW4g3eXHPjhHwdGskOw==",
"requires": {}
},
"util": {
"version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
"requires": {
@@ -17757,7 +17185,7 @@
"dependencies": {
"inherits": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
}
@@ -17765,40 +17193,40 @@
},
"util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"utila": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/utila/-/utila-0.4.0.tgz",
"integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
"dev": true
},
"utils-merge": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"v8-compile-cache": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
"vary": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"void-elements": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/void-elements/-/void-elements-2.0.1.tgz",
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
},
"watchpack": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/watchpack/-/watchpack-2.3.1.tgz",
"integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
"dev": true,
"requires": {
@@ -17808,13 +17236,13 @@
},
"webidl-conversions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
"dev": true
},
"webpack": {
"version": "5.72.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack/-/webpack-5.72.0.tgz",
"integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==",
"dev": true,
"requires": {
@@ -17846,7 +17274,7 @@
"dependencies": {
"schema-utils": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"requires": {
@@ -17859,7 +17287,7 @@
},
"webpack-bundle-analyzer": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz",
"integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==",
"dev": true,
"requires": {
@@ -17876,7 +17304,7 @@
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
@@ -17885,7 +17313,7 @@
},
"chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
@@ -17895,7 +17323,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -17904,19 +17332,19 @@
},
"commander": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
},
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
@@ -17925,7 +17353,7 @@
},
"ws": {
"version": "7.5.7",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-7.5.7.tgz",
"integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
"dev": true,
"requires": {}
@@ -17934,7 +17362,7 @@
},
"webpack-cli": {
"version": "4.9.2",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-cli/-/webpack-cli-4.9.2.tgz",
"integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==",
"dev": true,
"requires": {
@@ -17954,13 +17382,13 @@
"dependencies": {
"commander": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
},
"webpack-merge": {
"version": "5.8.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-merge/-/webpack-merge-5.8.0.tgz",
"integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
"dev": true,
"requires": {
@@ -17972,7 +17400,7 @@
},
"webpack-merge": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-merge/-/webpack-merge-4.2.2.tgz",
"integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
"dev": true,
"requires": {
@@ -17981,13 +17409,13 @@
},
"webpack-sources": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/webpack-sources/-/webpack-sources-3.2.3.tgz",
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true
},
"whatwg-url": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"dev": true,
"requires": {
@@ -17997,7 +17425,7 @@
},
"which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
@@ -18006,7 +17434,7 @@
},
"which-boxed-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"requires": {
@@ -18019,7 +17447,7 @@
},
"which-collection": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-collection/-/which-collection-1.0.1.tgz",
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
"dev": true,
"requires": {
@@ -18031,7 +17459,7 @@
},
"which-typed-array": {
"version": "1.1.7",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/which-typed-array/-/which-typed-array-1.1.7.tgz",
"integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
"dev": true,
"requires": {
@@ -18045,31 +17473,25 @@
},
"wildcard": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wildcard/-/wildcard-2.0.0.tgz",
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true
},
"word-wrap": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
"workerpool": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/workerpool/-/workerpool-6.2.0.tgz",
"integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
"dev": true
},
"wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"requires": {
"ansi-styles": "^4.0.0",
@@ -18079,7 +17501,7 @@
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
@@ -18087,7 +17509,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
@@ -18097,35 +17519,35 @@
},
"wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/ws/-/ws-8.5.0.tgz",
"integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
"dev": true,
"requires": {}
},
"y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
},
"yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"yaml": {
"version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
},
"yargs": {
"version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"requires": {
"cliui": "^7.0.2",
@@ -18139,12 +17561,12 @@
},
"yargs-parser": {
"version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs-parser/-/yargs-parser-20.2.4.tgz",
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
},
"yargs-unparser": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
"requires": {
@@ -18156,7 +17578,7 @@
},
"yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"requires": {
@@ -18166,7 +17588,7 @@
},
"yocto-queue": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "resolved": "https://npm.skia.org/chops-monorail/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true
}
diff --git a/package.json b/package.json
index 7109554..95d9129 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,6 @@
"karma-coverage": "^2.2.0",
"karma-mocha": "^2.0.1",
"karma-mocha-reporter": "^2.2.5",
- "karma-parallel": "^0.3.1",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.8",
"karma-webpack": "^5.0.0",
diff --git a/project/peopledetail.py b/project/peopledetail.py
index 3c4846b..af9cd49 100644
--- a/project/peopledetail.py
+++ b/project/peopledetail.py
@@ -14,10 +14,10 @@
import ezt
from framework import exceptions
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_helpers
from framework import framework_views
-from framework import jsonfeed
from framework import permissions
from framework import servlet
from framework import template_helpers
@@ -39,7 +39,6 @@
permissions.DELETE_OWN,
permissions.DELETE_ANY,
permissions.EDIT_ANY_MEMBER_NOTES,
- permissions.MODERATE_SPAM,
]
@@ -47,7 +46,7 @@
"""People detail page documents one partipant's involvement in a project."""
_PAGE_TEMPLATE = 'project/people-detail-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PEOPLE
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PEOPLE
def AssertBasePermission(self, mr):
"""Check that the user is allowed to access this servlet."""
@@ -234,6 +233,8 @@
role = post_data.get('role', '').lower()
extra_perms = []
+ # TODO(crbug.com/monorail/10936): getall in Flask is getlist
+ # for ep in post_data.getlist('extra_perms'):
for ep in post_data.getall('extra_perms'):
perm = framework_bizobj.CanonicalizeLabel(ep)
# Perms with leading underscores are reserved.
@@ -269,3 +270,9 @@
self.services.project.UpdateProjectRoles(
cnxn, project.project_id, owner_ids, committer_ids, contributor_ids)
+
+ # def GetPeopleDetailPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostPeopleDetailPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/project/peoplelist.py b/project/peoplelist.py
index 0db5ee6..f2aff1a 100644
--- a/project/peoplelist.py
+++ b/project/peoplelist.py
@@ -19,6 +19,7 @@
import ezt
from businesslogic import work_env
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_constants
from framework import framework_helpers
@@ -37,7 +38,7 @@
"""People list page shows a paginatied list of project members."""
_PAGE_TEMPLATE = 'project/people-list-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PEOPLE
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PEOPLE
def AssertBasePermission(self, mr):
super(PeopleList, self).AssertBasePermission(mr)
@@ -217,6 +218,8 @@
"""
# 1. Parse and validate user input.
remove_strs = post_data.getall('remove')
+ # TODO(crbug.com/monorail/10936): getall in Flask is getlist
+ # remove_strs = post_data.getlist('remove')
logging.info('remove_strs = %r', remove_strs)
remove_ids = set(
self.services.user.LookupUserIDs(mr.cnxn, remove_strs).values())
@@ -232,3 +235,9 @@
# 3. Determine the next page in the UI flow.
return framework_helpers.FormatAbsoluteURL(
mr, urls.PEOPLE_LIST, saved=1, ts=int(time.time()))
+
+ # def GetPeopleListPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostPeopleListPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/project/projectadmin.py b/project/projectadmin.py
index 887d3fc..a6e0d3e 100644
--- a/project/projectadmin.py
+++ b/project/projectadmin.py
@@ -8,17 +8,15 @@
from __future__ import division
from __future__ import absolute_import
-import logging
import time
+from google.cloud import exceptions
from six import string_types
-from third_party import cloudstorage
import ezt
from businesslogic import work_env
from framework import emailfmt
-from framework import framework_bizobj
-from framework import framework_constants
+from framework import flaskservlet
from framework import framework_helpers
from framework import gcs_helpers
from framework import permissions
@@ -39,7 +37,7 @@
"""A page with project configuration options for the Project Owner(s)."""
_PAGE_TEMPLATE = 'project/project-admin-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ADMIN
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ADMIN
def AssertBasePermission(self, mr):
super(ProjectAdmin, self).AssertBasePermission(mr)
@@ -138,7 +136,7 @@
if post_data.get('delete_logo'):
try:
gcs_helpers.DeleteObjectFromGCS(logo_gcs_id)
- except cloudstorage.NotFoundError:
+ except exceptions.NotFound:
pass
# Reset the GCS ID and file name.
logo_gcs_id = ''
@@ -190,3 +188,9 @@
errors.description = _MSG_DESCRIPTION_MISSING
return summary, description
+
+ # def GetProjectAdminPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostProjectAdminPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/project/projectadminadvanced.py b/project/projectadminadvanced.py
index 9c5fc1b..eafe912 100644
--- a/project/projectadminadvanced.py
+++ b/project/projectadminadvanced.py
@@ -17,12 +17,12 @@
from __future__ import print_function
from __future__ import absolute_import
-import logging
import time
import ezt
from businesslogic import work_env
+from framework import flaskservlet
from framework import framework_constants
from framework import framework_helpers
from framework import permissions
@@ -37,7 +37,7 @@
"""A page with project state options for the Project Owner(s)."""
_PAGE_TEMPLATE = 'project/project-admin-advanced-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ADMIN
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ADMIN
def AssertBasePermission(self, mr):
"""Make sure that the logged in user has permission to view this page.
@@ -211,3 +211,9 @@
'This project is not live, no user can move it')
moved_to = post_data.get('moved_to', '')
we.UpdateProject(mr.project.project_id, moved_to=moved_to)
+
+ # def GetProjectAdminAdvancedPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostProjectAdminAdvancedPage(self, **kwargs):
+ # return self.handler(**kwargs)
\ No newline at end of file
diff --git a/project/projectexport.py b/project/projectexport.py
index e315442..177eea4 100644
--- a/project/projectexport.py
+++ b/project/projectexport.py
@@ -14,6 +14,7 @@
import ezt
+from framework import flaskservlet
from framework import permissions
from framework import jsonfeed
from framework import servlet
@@ -25,7 +26,7 @@
"""Only site admins can export a project"""
_PAGE_TEMPLATE = 'project/project-export-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ADMIN
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ADMIN
def AssertBasePermission(self, mr):
"""Make sure that the logged in user has permission to view this page."""
@@ -42,7 +43,11 @@
'page_perms': self.MakePagePerms(mr, None, permissions.CREATE_ISSUE),
}
+ # def GetProjectExportPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+# TODO(https://crbug.com/monorail/10936): Use FlaskJsonFeed
class ProjectExportJSON(jsonfeed.JsonFeed):
"""ProjectExportJSON shows all configuration for a Project in JSON form."""
@@ -201,3 +206,9 @@
'ccs': [email_dict.get(user) for user in component.cc_ids],
}
return component_json
+
+ # def GetProjectExportJSONPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostProjectExportJSONPage(self, **kwargs):
+ # return self.handler(**kwargs)
\ No newline at end of file
diff --git a/project/projectsummary.py b/project/projectsummary.py
index 018aaf3..c0cad5a 100644
--- a/project/projectsummary.py
+++ b/project/projectsummary.py
@@ -8,9 +8,8 @@
from __future__ import division
from __future__ import absolute_import
-import logging
-
from businesslogic import work_env
+from framework import flaskservlet
from framework import permissions
from framework import servlet
from project import project_helpers
@@ -21,7 +20,7 @@
"""Page to show brief project description and process documentation."""
_PAGE_TEMPLATE = 'project/project-summary-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page."""
@@ -70,3 +69,6 @@
help_data['cue'] = 'document_team_duties'
return help_data
+
+ # def GetProjectSummaryPage(self, **kwargs):
+ # return self.handler(**kwargs)
\ No newline at end of file
diff --git a/project/projectupdates.py b/project/projectupdates.py
index bd1e316..304b435 100644
--- a/project/projectupdates.py
+++ b/project/projectupdates.py
@@ -13,6 +13,7 @@
import ezt
from features import activities
+from framework import flaskservlet
from framework import servlet
from framework import urls
@@ -21,7 +22,7 @@
"""ProjectUpdates page shows a list of past activities."""
_PAGE_TEMPLATE = 'project/project-updates-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_UPDATES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_UPDATES
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page."""
@@ -40,3 +41,6 @@
self.services, mr, project_ids=[mr.project_id],
ending='by_user', updates_page_url=url,
autolink=self.services.autolink)
+
+ # def GetProjectUpdatesPage(self, **kwargs):
+ # return self.handler(**kwargs)
\ No newline at end of file
diff --git a/project/redirects.py b/project/redirects.py
index 7813a56..8c8b818 100644
--- a/project/redirects.py
+++ b/project/redirects.py
@@ -13,8 +13,9 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
+from framework import flaskservlet
from framework import framework_helpers
from framework import servlet
from framework import urls
@@ -26,14 +27,24 @@
def get(self, **kwargs):
"""Construct a 302 pointing at project.docs_url, or at adminIntro."""
if not self.mr.project:
- self.response.status = httplib.NOT_FOUND
+ # TODO(crbug.com/monorail/10936): status in Flask is status_code
+ # self.response.status_code = http_client.NOT_FOUND
+ self.response.status = http_client.NOT_FOUND
return
docs_url = self.mr.project.docs_url
if not docs_url:
docs_url = framework_helpers.FormatAbsoluteURL(
self.mr, urls.ADMIN_INTRO, include_project=True)
self.response.location = docs_url
- self.response.status = httplib.MOVED_PERMANENTLY
+ # TODO(crbug.com/monorail/10936): status in Flask is status_code
+ # self.response.status_code = http_client.MOVED_PERMANENTLY
+ self.response.status = http_client.MOVED_PERMANENTLY
+
+ # def GetWikiListRedirect(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def GetWikiRedirect(self, **kwargs):
+ # return self.handler(**kwargs)
class SourceRedirect(servlet.Servlet):
@@ -42,11 +53,18 @@
def get(self, **kwargs):
"""Construct a 302 pointing at project.source_url, or at adminIntro."""
if not self.mr.project:
- self.response.status = httplib.NOT_FOUND
+ # TODO(crbug.com/monorail/10936): status in Flask is status_code
+ # self.response.status_code = http_client.NOT_FOUND
+ self.response.status = http_client.NOT_FOUND
return
source_url = self.mr.project.source_url
if not source_url:
source_url = framework_helpers.FormatAbsoluteURL(
self.mr, urls.ADMIN_INTRO, include_project=True)
self.response.location = source_url
- self.response.status = httplib.MOVED_PERMANENTLY
+ # TODO(crbug.com/monorail/10936): status in Flask is status_code
+ # self.response.status_code = http_client.MOVED_PERMANENTLY
+ self.response.status = http_client.MOVED_PERMANENTLY
+
+ # def GetSourceRedirect(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/project/test/redirects_test.py b/project/test/redirects_test.py
index 2f51495..0091571 100644
--- a/project/test/redirects_test.py
+++ b/project/test/redirects_test.py
@@ -8,7 +8,7 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
import unittest
import webapp2
@@ -35,14 +35,13 @@
"""Visiting a project that we don't host is 404."""
self.servlet.mr.project = None
self.servlet.get()
- self.assertEqual(
- httplib.NOT_FOUND, self.servlet.response.status_code)
+ self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
def testRedirect_NoDocsSpecified(self):
"""Visiting any old wiki URL goes to admin intro by default."""
self.servlet.get()
self.assertEqual(
- httplib.MOVED_PERMANENTLY, self.servlet.response.status_code)
+ http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
self.assertTrue(
self.servlet.response.location.endswith(urls.ADMIN_INTRO))
@@ -51,7 +50,7 @@
self.project.docs_url = 'some_url'
self.servlet.get()
self.assertEqual(
- httplib.MOVED_PERMANENTLY, self.servlet.response.status_code)
+ http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
self.assertEqual('some_url', self.servlet.response.location)
@@ -70,14 +69,13 @@
"""Visiting a project that we don't host is 404."""
self.servlet.mr.project = None
self.servlet.get()
- self.assertEqual(
- httplib.NOT_FOUND, self.servlet.response.status_code)
+ self.assertEqual(http_client.NOT_FOUND, self.servlet.response.status_code)
def testRedirect_NoSrcSpecified(self):
"""Visiting any old source code URL goes to admin intro by default."""
self.servlet.get()
self.assertEqual(
- httplib.MOVED_PERMANENTLY, self.servlet.response.status_code)
+ http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
self.assertTrue(
self.servlet.response.location.endswith(urls.ADMIN_INTRO))
@@ -86,5 +84,5 @@
self.project.source_url = 'some_url'
self.servlet.get()
self.assertEqual(
- httplib.MOVED_PERMANENTLY, self.servlet.response.status_code)
+ http_client.MOVED_PERMANENTLY, self.servlet.response.status_code)
self.assertEqual('some_url', self.servlet.response.location)
diff --git a/queue.yaml b/queue.yaml
index 7b3e7d9..ddec4e9 100644
--- a/queue.yaml
+++ b/queue.yaml
@@ -5,14 +5,6 @@
queue:
-- name: componentexport
- rate: 1/d
- max_concurrent_requests: 1
- retry_parameters:
- task_retry_limit: 6
- task_age_limit: 24h
- min_backoff_seconds: 60
-
- name: default
rate: 5/s
max_concurrent_requests: 30
@@ -40,10 +32,6 @@
task_age_limit: 24h
min_backoff_seconds: 60
-- name: spamexport
- rate: 1/d
- max_concurrent_requests: 1
-
- name: wipeoutsendusers
rate: 5/s
retry_parameters:
diff --git a/registerpages.py b/registerpages.py
index 1da5c69..2e0d6ab 100644
--- a/registerpages.py
+++ b/registerpages.py
@@ -29,17 +29,12 @@
from features import notify
from features import rerankhotlist
from features import savedqueries
-from features import spammodel
-from features import spamtraining
-from features import componentexport
-from framework import banned
+from framework import banned, excessiveactivity
from framework import clientmon
from framework import csp_report
from framework import deleteusers
-from framework import excessiveactivity
from framework import trimvisitedpages
-from framework import framework_bizobj
from framework import reap
from framework import registerpages_helpers
from framework import ts_mon_js
@@ -67,7 +62,6 @@
from sitewide import groupcreate
from sitewide import groupdetail
from sitewide import grouplist
-from sitewide import hostinghome
from sitewide import moved
from sitewide import projectcreate
from sitewide import userprofile
@@ -93,7 +87,6 @@
from tracker import issueoriginal
from tracker import issuereindex
from tracker import issuetips
-from tracker import spam
from tracker import templatecreate
from tracker import templatedetail
from tracker import fltconversion
@@ -192,15 +185,16 @@
# Note: the following are at URLS that are not externally accessible.
urls.NOTIFY_RULES_DELETED_TASK: notify.NotifyRulesDeletedTask,
})
- self._SetupProjectServlets({
- urls.ADMIN_INTRO: projectsummary.ProjectSummary,
- urls.PEOPLE_LIST: peoplelist.PeopleList,
- urls.PEOPLE_DETAIL: peopledetail.PeopleDetail,
- urls.UPDATES_LIST: projectupdates.ProjectUpdates,
- urls.ADMIN_META: projectadmin.ProjectAdmin,
- urls.ADMIN_ADVANCED: projectadminadvanced.ProjectAdminAdvanced,
- urls.ADMIN_EXPORT: projectexport.ProjectExport,
- urls.ADMIN_EXPORT_JSON: projectexport.ProjectExportJSON,
+ self._SetupProjectServlets(
+ {
+ urls.ADMIN_INTRO: projectsummary.ProjectSummary,
+ urls.PEOPLE_LIST: peoplelist.PeopleList,
+ urls.PEOPLE_DETAIL: peopledetail.PeopleDetail,
+ urls.UPDATES_LIST: projectupdates.ProjectUpdates,
+ urls.ADMIN_META: projectadmin.ProjectAdmin,
+ urls.ADMIN_ADVANCED: projectadminadvanced.ProjectAdminAdvanced,
+ urls.ADMIN_EXPORT: projectexport.ProjectExport,
+ urls.ADMIN_EXPORT_JSON: projectexport.ProjectExportJSON,
})
def _RegisterIssueHandlers(self):
@@ -217,16 +211,10 @@
urls.NOTIFY_BULK_CHANGE_TASK: notify.NotifyBulkChangeTask,
urls.NOTIFY_APPROVAL_CHANGE_TASK: notify.NotifyApprovalChangeTask,
urls.OUTBOUND_EMAIL_TASK: notify.OutboundEmailTask,
- urls.SPAM_DATA_EXPORT_TASK: spammodel.TrainingDataExportTask,
urls.DATE_ACTION_CRON: dateaction.DateActionCron,
- urls.SPAM_TRAINING_CRON: spamtraining.TrainSpamModelCron,
urls.PUBLISH_PUBSUB_ISSUE_CHANGE_TASK:
pubsub.PublishPubsubIssueChangeTask,
urls.ISSUE_DATE_ACTION_TASK: dateaction.IssueDateActionTask,
- urls.COMPONENT_DATA_EXPORT_CRON:
- componentexport.ComponentTrainingDataExport,
- urls.COMPONENT_DATA_EXPORT_TASK:
- componentexport.ComponentTrainingDataExportTask,
urls.FLT_ISSUE_CONVERSION_TASK: fltconversion.FLTConvertTask,
})
@@ -307,8 +295,6 @@
issueexport.IssueExportJSON,
urls.ISSUE_IMPORT:
issueimport.IssueImport,
- urls.SPAM_MODERATION_QUEUE:
- spam.ModerationQueue,
})
# GETs for /issues/detail are now handled by the web components page.
@@ -342,33 +328,41 @@
'/issues/': list_redir,
})
- list_redir = registerpages_helpers.MakeRedirect(urls.ISSUE_LIST)
- self._SetupServlets({
- '/issues': list_redir,
- '/issues/': list_redir,
- })
def _RegisterFrameworkHandlers(self):
"""Register page and form handlers for framework functionality."""
- self._SetupServlets({
- urls.CSP_REPORT: csp_report.CSPReportPage,
+ self._SetupServlets(
+ {
+ urls.CSP_REPORT:
+ csp_report.CSPReportPage,
- # These are only shown to users if specific conditions are met.
- urls.BANNED: banned.Banned,
- urls.PROJECT_MOVED: moved.ProjectMoved,
+ # These are only shown to users if specific conditions are met.
+ urls.EXCESSIVE_ACTIVITY:
+ excessiveactivity.ExcessiveActivity,
+ urls.BANNED:
+ banned.Banned,
+ urls.PROJECT_MOVED:
+ moved.ProjectMoved,
- # These are not externally accessible
- urls.RAMCACHE_CONSOLIDATE_CRON: cachemanager_svc.RamCacheConsolidate,
- urls.REAP_CRON: reap.Reap,
- urls.SPAM_DATA_EXPORT_CRON: spammodel.TrainingDataExport,
- urls.LOAD_API_CLIENT_CONFIGS_CRON: (
- client_config_svc.LoadApiClientConfigs),
- urls.CLIENT_MON: clientmon.ClientMonitor,
- urls.TRIM_VISITED_PAGES_CRON: trimvisitedpages.TrimVisitedPages,
- urls.TS_MON_JS: ts_mon_js.MonorailTSMonJSHandler,
- urls.WARMUP: warmup.Warmup,
- urls.START: warmup.Start,
- urls.STOP: warmup.Stop
+ # These are not externally accessible
+ urls.RAMCACHE_CONSOLIDATE_CRON:
+ cachemanager_svc.RamCacheConsolidate,
+ urls.REAP_CRON:
+ reap.Reap,
+ urls.LOAD_API_CLIENT_CONFIGS_CRON:
+ (client_config_svc.LoadApiClientConfigs),
+ urls.CLIENT_MON:
+ clientmon.ClientMonitor,
+ urls.TRIM_VISITED_PAGES_CRON:
+ trimvisitedpages.TrimVisitedPages,
+ urls.TS_MON_JS:
+ ts_mon_js.MonorailTSMonJSHandler,
+ urls.WARMUP:
+ warmup.Warmup,
+ urls.START:
+ warmup.Start,
+ urls.STOP:
+ warmup.Stop
})
def _RegisterSitewideHandlers(self):
@@ -377,7 +371,6 @@
urls.PROJECT_CREATE: projectcreate.ProjectCreate,
# The user settings page is a site-wide servlet, not under /u/.
urls.USER_SETTINGS: usersettings.UserSettings,
- urls.HOSTING_HOME: hostinghome.HostingHome,
urls.GROUP_CREATE: groupcreate.GroupCreate,
urls.GROUP_LIST: grouplist.GroupList,
urls.GROUP_DELETE: grouplist.GroupList,
@@ -391,7 +384,6 @@
self._SetupUserServlets({
urls.USER_PROFILE: userprofile.UserProfile,
- urls.USER_PROFILE_POLYMER: userprofile.UserProfilePolymer,
urls.BAN_USER: userprofile.BanUser,
urls.BAN_SPAMMER: banspammer.BanSpammer,
urls.USER_CLEAR_BOUNCING: userclearbouncing.UserClearBouncing,
@@ -400,13 +392,14 @@
urls.USER_UPDATES_MINE: userupdates.UserUpdatesIndividual,
})
- self._SetupUserHotlistServlets({
- urls.HOTLIST_ISSUES: hotlistissues.HotlistIssues,
- urls.HOTLIST_ISSUES_CSV: hotlistissuescsv.HotlistIssuesCsv,
- urls.HOTLIST_PEOPLE: hotlistpeople.HotlistPeopleList,
- urls.HOTLIST_DETAIL: hotlistdetails.HotlistDetails,
- urls.HOTLIST_RERANK_JSON: rerankhotlist.RerankHotlistIssue,
- })
+ self._SetupUserHotlistServlets(
+ {
+ urls.HOTLIST_ISSUES: hotlistissues.HotlistIssues,
+ urls.HOTLIST_ISSUES_CSV: hotlistissuescsv.HotlistIssuesCsv,
+ urls.HOTLIST_PEOPLE: hotlistpeople.HotlistPeopleList,
+ urls.HOTLIST_DETAIL: hotlistdetails.HotlistDetails,
+ urls.HOTLIST_RERANK_JSON: rerankhotlist.RerankHotlistIssue,
+ })
profile_redir = registerpages_helpers.MakeRedirectInScope(
urls.USER_PROFILE, 'u')
@@ -430,8 +423,6 @@
redirect = registerpages_helpers.MakeRedirect('/')
self._SetupServlets(
{
- '/projects/': redirect,
- '/projects': redirect,
'/hosting/': redirect,
'/hosting': redirect,
'/p': redirect,
@@ -457,14 +448,16 @@
def _RegisterInboundMail(self):
"""Register a handler for inbound email and email bounces."""
- self.routes.append(webapp2.Route(
- '/_ah/mail/<project_addr:.+>',
- handler=inboundemail.InboundEmail,
- methods=['POST', 'GET']))
- self.routes.append(webapp2.Route(
- '/_ah/bounce',
- handler=inboundemail.BouncedEmail,
- methods=['POST', 'GET']))
+ self.routes.append(
+ webapp2.Route(
+ '/_ah/mail/<project_addr:.+>',
+ handler=inboundemail.InboundEmail,
+ methods=['POST', 'GET']))
+ self.routes.append(
+ webapp2.Route(
+ '/_ah/bounce',
+ handler=inboundemail.BouncedEmail,
+ methods=['POST', 'GET']))
def _RegisterErrorPages(self):
"""Register handlers for errors."""
diff --git a/requirements.py2.txt b/requirements.py2.txt
index cb95243..6bc87a4 100644
--- a/requirements.py2.txt
+++ b/requirements.py2.txt
@@ -8,14 +8,13 @@
google-api-python-client==1.12.11 --hash=sha256:7e0a1a265c8d3088ee1987778c72683fcb376e32bada8d7767162bd9c503fd9b
google-auth==1.35.0 --hash=sha256:997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258
google-cloud-logging==1.15.1 --hash=sha256:20c7557fd170891eab1a5e428338ad646203ddc519bc2fc57fd59bef14cd3602
+google-cloud-storage==1.44.0 --hash=sha256:cd4a223e9c18d771721a85c98a9c01b97d257edddff833ba63b7b1f0b9b4d6e9
google-cloud-tasks==1.5.0 --hash=sha256:36aa16f0c52aa9a292b1f919d2582725731e9760393c9ca98ce599c68cbf9996
-redis==3.5.3 --hash=sha256:432b788c4530cfe16d8d943a09d40ca6c16149727e4afe8c2c9d5580c59d9f24
+httpagentparser==1.9.2 --hash=sha256:a190dfdc5e63b2f1c87729424b19cbc49263d6a1fb585a16ac1c9d9ce127a4bf
+httplib2==0.20.4 --hash=sha256:58a98e45b4b1a48273073f905d2961666ecf0fbac4250ea5b47aef259eb5c585
+oauth2client==3.0.0 --hash=sha256:5b5b056ec6f2304e7920b632885bd157fa71d1a7f3ddd00a43b1541a8d1a2460
# Development packages.
-fakeredis==1.1.1 --hash=sha256:b8cf9c19fbcd53fe0512ece75b2df9430c46f75898111f50cff309c3a35b921d
-
-# Required by fakeredis
-sortedcontainers==2.4.0 --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0
# Required by Flask==1.1.4
click==6.6 --hash=sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4
@@ -26,7 +25,6 @@
# Required by google-api-python-client
google-auth-httplib2==0.1.0 --hash=sha256:31e49c36c6b5643b57e82617cb3e021e3e1d2df9da63af67252c02fa9c1f4a10
-httplib2==0.20.4 --hash=sha256:58a98e45b4b1a48273073f905d2961666ecf0fbac4250ea5b47aef259eb5c585
packaging==20.9 --hash=sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a
pyparsing==2.4.7 --hash=sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b
uritemplate==3.0.1 --hash=sha256:07620c3f3f8eed1f12600845892b0e036a2420acf513c53f7de0abd911a5894f
@@ -36,6 +34,9 @@
google-cloud-core==1.7.2 --hash=sha256:5b77935f3d9573e27007749a3b522f08d764c5b5930ff1527b2ab2743e9f0c15
# Required by google-cloud-tasks
+google-resumable-media==1.3.3 --hash=sha256:092f39153cd67a4e409924edf08129f43cc72e630a1eb22abec93e80155df4ba
+
+# Required by google-cloud-tasks
enum34==1.1.10 --hash=sha256:a98a201d6de3f2ab3db284e70a33b0f896fbf35f8086594e8c9e74b909058d53
googleapis-common-protos==1.52.0 --hash=sha256:c8961760f5aad9a711d37b675be103e0cc4e9a39327e0d6d857872f698403e24
grpc-google-iam-v1==0.12.3 --hash=sha256:0bfb5b56f648f457021a91c0df0db4934b6e0c300bd0f2de2333383fe958aa72
diff --git a/requirements.txt b/requirements.txt
index ef58a25..51dec20 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,17 +1,56 @@
-# Python 3 packages.
-# All packages must be at least 3 weeks old, crbug.com/1117193#c5
-# For hash-checking mode, all nested dependencies must be included.
-
-# Production packages.
-appengine-python-standard==0.1.1
+# This file is generated from the .vpython3 spec file.
+# Use `make generate_requirements_txt` to update.
+appengine-python-standard==0.3.1
+attrs==21.4.0
+cachetools==4.2.1
+certifi==2020.12.5
+chardet==4.0.0
+Click==7.0
ezt==1.1
-google-api-python-client==2.11.0
-google-auth==1.34.0
-google-cloud-tasks==1.5.0
+Flask==1.0.2
+frozendict==2.0.6
+google-api-core==1.31.5
+google-api-python-client==2.2.0
+google-auth==1.35.0
+google-auth-httplib2==0.1.0
+google-cloud-appengine-logging==1.1.1
+google-cloud-audit-log==0.2.0
+google-cloud-core==2.2.2
+google-cloud-logging==3.0.0
+google-cloud-storage==1.41.1
+google-cloud-tasks==2.8.1
+google-crc32c==1.3.0
+google-resumable-media==2.2.1
+googleapis-common-protos==1.52.0
+grpc-google-iam-v1==0.12.3
+grpcio==1.44.0
+httpagentparser==1.9.3
httplib2==0.19.1
-mysqlclient==2.0.1
+idna==2.8
+iniconfig==1.1.1
+itsdangerous==1.1.0
+Jinja2==2.10.1
+MarkupSafe==1.1.1
+mock==4.0.3
+mysqlclient==2.1.1
oauth2client==4.1.3
-redis==3.5.3
-
-# Development packages.
-fakeredis==1.5.2
+packaging==16.8
+Pillow==8.3.1
+pluggy==0.13.1
+proto-plus==1.20.3
+protobuf==3.19.3
+py==1.10.0
+pyasn1==0.4.8
+pyasn1-modules==0.2.8
+pyparsing==2.4.7
+pytest==6.2.2
+pytz==2021.1
+requests==2.25.1
+rsa==4.7.2
+ruamel.yaml==0.17.16
+ruamel.yaml.clib==0.2.6
+six==1.15.0
+toml==0.10.1
+uritemplate==3.0.0
+urllib3==1.26.4
+Werkzeug==1.0.1
diff --git a/search/backendnonviewable.py b/search/backendnonviewable.py
index d76eeef..23b601c 100644
--- a/search/backendnonviewable.py
+++ b/search/backendnonviewable.py
@@ -37,6 +37,7 @@
NONVIEWABLE_MEMCACHE_EXPIRATION = 15 * framework_constants.SECS_PER_MINUTE
+# Change to FlaskInternalTask
class BackendNonviewable(jsonfeed.InternalTask):
"""JSON servlet for getting issue IDs that the specified user cannot view."""
@@ -135,3 +136,9 @@
cnxn, effective_ids, [project_id], shard_id)
return ok_iids
+
+ # def GetBackendNonviewable(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostBackendNonviewable(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/search/backendsearch.py b/search/backendsearch.py
index 53e87ec..1da9975 100644
--- a/search/backendsearch.py
+++ b/search/backendsearch.py
@@ -31,6 +31,7 @@
from tracker import tracker_constants
+# Change to FlaskInternalTask
class BackendSearch(jsonfeed.InternalTask):
"""JSON servlet for issue search in a GAE backend."""
@@ -74,3 +75,9 @@
'search_limit_reached': pipeline.search_limit_reached,
'error': error_message,
}
+
+ # def GetBackendSearch(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostBackendSearch(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/services/cachemanager_svc.py b/services/cachemanager_svc.py
index 8dc5753..02ad6dd 100644
--- a/services/cachemanager_svc.py
+++ b/services/cachemanager_svc.py
@@ -130,6 +130,7 @@
cnxn, kind=kind, where=[('timestep < %s', [last_timestep])])
+# TODO: change to FlaskInternalTask when convert to Flask
class RamCacheConsolidate(jsonfeed.InternalTask):
"""Drop old Invalidate rows when there are too many of them."""
@@ -164,3 +165,9 @@
'old_count': old_count,
'new_count': new_count,
}
+
+ # def GetRamCacheConsolidate(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostRamCacheConsolidate(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/services/caches.py b/services/caches.py
index 07702bf..35276a0 100644
--- a/services/caches.py
+++ b/services/caches.py
@@ -20,7 +20,6 @@
from __future__ import absolute_import
import logging
-import redis
from protorpc import protobuf
@@ -28,8 +27,6 @@
import settings
from framework import framework_constants
-from framework import redis_utils
-from proto import tracker_pb2
DEFAULT_MAX_SIZE = 10000
@@ -186,28 +183,12 @@
# so as to avoid timeouts.
_FETCH_BATCH_SIZE = 10000
- def __init__(
- self,
- cache_manager,
- kind,
- prefix,
- pb_class,
- max_size=None,
- use_redis=False,
- redis_client=None):
+ def __init__(self, cache_manager, kind, prefix, pb_class, max_size=None):
self.cache = self._MakeCache(cache_manager, kind, max_size=max_size)
self.prefix = prefix
self.pb_class = pb_class
- if use_redis:
- self.redis_client = redis_client or redis_utils.CreateRedisClient()
- self.use_redis = redis_utils.VerifyRedisConnection(
- self.redis_client, msg=kind)
- else:
- self.redis_client = None
- self.use_redis = False
-
def _MakeCache(self, cache_manager, kind, max_size=None):
"""Make the RAM cache and register it with the cache_manager."""
return RamCache(cache_manager, kind, max_size=max_size)
@@ -215,7 +196,7 @@
def CacheItem(self, key, value):
"""Add the given key-value pair to RAM and L2 cache."""
self.cache.CacheItem(key, value)
- self._WriteToCache({key: value})
+ self._WriteToMemcache({key: value})
def HasItem(self, key):
"""Return True if the given key is in the RAM cache."""
@@ -258,7 +239,7 @@
if missed_keys:
if use_cache:
- cache_hits, missed_keys = self._ReadFromCache(missed_keys)
+ cache_hits, missed_keys = self._ReadFromMemcache(missed_keys)
result_dict.update(cache_hits)
self.cache.CacheAll(cache_hits)
@@ -269,7 +250,7 @@
result_dict.update(retrieved_dict)
if use_cache:
self.cache.CacheAll(retrieved_dict)
- self._WriteToCache(retrieved_dict)
+ self._WriteToMemcache(retrieved_dict)
still_missing_keys = [key for key in keys if key not in result_dict]
return result_dict, still_missing_keys
@@ -283,7 +264,7 @@
def InvalidateKeys(self, cnxn, keys):
"""Drop the given keys from both RAM and L2 cache."""
self.cache.InvalidateKeys(cnxn, keys)
- self._DeleteFromCache(keys)
+ self._DeleteFromMemcache(keys)
def InvalidateAllKeys(self, cnxn, keys):
"""Drop the given keys from L2 cache and invalidate all keys in RAM.
@@ -292,7 +273,7 @@
invalidating a large group of keys all at once. Only use when necessary.
"""
self.cache.InvalidateAll(cnxn)
- self._DeleteFromCache(keys)
+ self._DeleteFromMemcache(keys)
def GetAllAlreadyInRam(self, keys):
"""Look only in RAM to return {key: values}, missed_keys."""
@@ -307,55 +288,6 @@
"""On RAM and L2 cache miss, hit the database."""
raise NotImplementedError()
- def _ReadFromCache(self, keys):
- # type: (Sequence[int]) -> Mapping[str, Any], Sequence[int]
- """Reads a list of keys from secondary caching service.
-
- Redis will be used if Redis is enabled and connection is valid;
- otherwise, memcache will be used.
-
- Args:
- keys: List of integer keys to look up in L2 cache.
-
- Returns:
- A pair: hits, misses. Where hits is {key: value} and misses is
- a list of any keys that were not found anywhere.
- """
- if self.use_redis:
- return self._ReadFromRedis(keys)
- else:
- return self._ReadFromMemcache(keys)
-
- def _WriteToCache(self, retrieved_dict):
- # type: (Mapping[int, Any]) -> None
- """Writes a set of key-value pairs to secondary caching service.
-
- Redis will be used if Redis is enabled and connection is valid;
- otherwise, memcache will be used.
-
- Args:
- retrieved_dict: Dictionary contains pairs of key-values to write to cache.
- """
- if self.use_redis:
- return self._WriteToRedis(retrieved_dict)
- else:
- return self._WriteToMemcache(retrieved_dict)
-
- def _DeleteFromCache(self, keys):
- # type: (Sequence[int]) -> None
- """Selects which cache to delete from.
-
- Redis will be used if Redis is enabled and connection is valid;
- otherwise, memcache will be used.
-
- Args:
- keys: List of integer keys to delete from cache.
- """
- if self.use_redis:
- return self._DeleteFromRedis(keys)
- else:
- return self._DeleteFromMemcache(keys)
-
def _ReadFromMemcache(self, keys):
# type: (Sequence[int]) -> Mapping[str, Any], Sequence[int]
"""Read the given keys from memcache, return {key: value}, missing_keys."""
@@ -403,79 +335,6 @@
key_prefix=self.prefix,
namespace=settings.memcache_namespace)
- def _WriteToRedis(self, retrieved_dict):
- # type: (Mapping[int, Any]) -> None
- """Write entries for each key-value pair to Redis. Encode PBs.
-
- Args:
- retrieved_dict: Dictionary of key-value pairs to write to Redis.
- """
- try:
- for key, value in retrieved_dict.items():
- redis_key = redis_utils.FormatRedisKey(key, prefix=self.prefix)
- redis_value = self._ValueToStr(value)
-
- self.redis_client.setex(
- redis_key, framework_constants.CACHE_EXPIRATION, redis_value)
- except redis.RedisError as identifier:
- logging.error(
- 'Redis error occurred during write operation: %s', identifier)
- self._DeleteFromRedis(list(retrieved_dict.keys()))
- return
- logging.info(
- 'cached batch of %d values in redis %s', len(retrieved_dict),
- self.prefix)
-
- def _ReadFromRedis(self, keys):
- # type: (Sequence[int]) -> Mapping[str, Any], Sequence[int]
- """Read the given keys from Redis, return {key: value}, missing keys.
-
- Args:
- keys: List of integer keys to read from Redis.
-
- Returns:
- A pair: hits, misses. Where hits is {key: value} and misses is
- a list of any keys that were not found anywhere.
- """
- cache_hits = {}
- missing_keys = []
- try:
- values_list = self.redis_client.mget(
- [redis_utils.FormatRedisKey(key, prefix=self.prefix) for key in keys])
- except redis.RedisError as identifier:
- logging.error(
- 'Redis error occurred during read operation: %s', identifier)
- values_list = [None] * len(keys)
-
- for key, serialized_value in zip(keys, values_list):
- if serialized_value:
- value = self._StrToValue(serialized_value)
- cache_hits[key] = value
- self.cache.CacheItem(key, value)
- else:
- missing_keys.append(key)
- logging.info(
- 'decoded %d values from redis %s, missing %d', len(cache_hits),
- self.prefix, len(missing_keys))
- return cache_hits, missing_keys
-
- def _DeleteFromRedis(self, keys):
- # type: (Sequence[int]) -> None
- """Delete key-values from redis.
-
- Args:
- keys: List of integer keys to delete.
- """
- try:
- self.redis_client.delete(
- *[
- redis_utils.FormatRedisKey(key, prefix=self.prefix)
- for key in keys
- ])
- except redis.RedisError as identifier:
- logging.error(
- 'Redis error occurred during delete operation %s', identifier)
-
def _KeyToStr(self, key):
# type: (int) -> str
"""Convert our int IDs to strings for use as memcache keys."""
@@ -489,26 +348,19 @@
def _ValueToStr(self, value):
# type: (Any) -> str
"""Serialize an application object so that it can be stored in L2 cache."""
- if self.use_redis:
- return redis_utils.SerializeValue(value, pb_class=self.pb_class)
+ if not self.pb_class:
+ return value
+ elif self.pb_class == int:
+ return str(value)
else:
- if not self.pb_class:
- return value
- elif self.pb_class == int:
- return str(value)
- else:
- return protobuf.encode_message(value)
+ return protobuf.encode_message(value)
def _StrToValue(self, serialized_value):
# type: (str) -> Any
"""Deserialize L2 cache string into an application object."""
- if self.use_redis:
- return redis_utils.DeserializeValue(
- serialized_value, pb_class=self.pb_class)
+ if not self.pb_class:
+ return serialized_value
+ elif self.pb_class == int:
+ return int(serialized_value)
else:
- if not self.pb_class:
- return serialized_value
- elif self.pb_class == int:
- return int(serialized_value)
- else:
- return protobuf.decode_message(self.pb_class, serialized_value)
+ return protobuf.decode_message(self.pb_class, serialized_value)
diff --git a/services/client_config_svc.py b/services/client_config_svc.py
index c0acf03..ce85a95 100644
--- a/services/client_config_svc.py
+++ b/services/client_config_svc.py
@@ -12,7 +12,7 @@
import logging
import os
import time
-import urllib
+from six.moves import urllib
import webapp2
from google.appengine.api import app_identity
@@ -46,6 +46,7 @@
# Note: The cron job must have hit the servlet before this will work.
+# when convert to flask replace the webapp2.RequestHandler to Object
class LoadApiClientConfigs(webapp2.RequestHandler):
config_loads = ts_mon.CounterMetric(
@@ -117,6 +118,36 @@
return content_text
+ # def GetLoadApiClientConfigs(self):
+ # global service_account_map
+ # global qpm_dict
+ # authorization_token, _ = app_identity.get_access_token(
+ # framework_constants.OAUTH_SCOPE)
+ # response = urlfetch.fetch(
+ # LUCI_CONFIG_URL,
+ # method=urlfetch.GET,
+ # follow_redirects=False,
+ # headers={'Content-Type': 'application/json; charset=UTF-8',
+ # 'Authorization': 'Bearer ' + authorization_token})
+
+ # if response.status_code != 200:
+ # logging.error('Invalid response from luci-config: %r', response)
+ # self.config_loads.increment({'success': False, 'type': 'luci-cfg-error'})
+ # flask.abort(500, 'Invalid response from luci-config')
+
+ # try:
+ # content_text = self._process_response(response)
+ # except Exception as e:
+ # flask.abort(500, str(e))
+
+ # logging.info('luci-config content decoded: %r.', content_text)
+ # configs = ClientConfig(configs=content_text,
+ # key_name='api_client_configs')
+ # configs.put()
+ # service_account_map = None
+ # qpm_dict = None
+ # self.config_loads.increment({'success': True, 'type': 'success'})
+
class ClientConfigService(object):
"""The persistence layer for client config data."""
diff --git a/services/issue_svc.py b/services/issue_svc.py
index eab85ab..8e5a45f 100644
--- a/services/issue_svc.py
+++ b/services/issue_svc.py
@@ -24,7 +24,7 @@
from google.appengine.api import app_identity
from google.appengine.api import images
-from third_party import cloudstorage
+from google.cloud import storage
import settings
from features import filterrules_helpers
@@ -1659,12 +1659,11 @@
# MakeIssueComments expects a list of [(filename, contents, mimetype),...]
attachments = []
for attachment in initial_summary_comment.attachments:
- object_path = ('/' + app_identity.get_default_gcs_bucket_name() +
- attachment.gcs_object_id)
- with cloudstorage.open(object_path, 'r') as f:
- content = f.read()
- attachments.append(
- [attachment.filename, content, attachment.mimetype])
+ client = storage.Client()
+ bucket = client.get_bucket(app_identity.get_default_gcs_bucket_name)
+ blob = bucket.get_blob(attachment.gcs_object_id)
+ content = blob.download_as_bytes()
+ attachments.append([attachment.filename, content, attachment.mimetype])
if attachments:
new_issue.attachment_count = len(attachments)
diff --git a/services/ml_helpers.py b/services/ml_helpers.py
index c4650b4..d05a582 100644
--- a/services/ml_helpers.py
+++ b/services/ml_helpers.py
@@ -8,6 +8,7 @@
feature extraction, so that the serving code and training code both use the same
set of features.
"""
+# TODO(crbug.com/monorail/7515): DELETE THIS FILE and all references.
from __future__ import division
from __future__ import print_function
diff --git a/services/spam_svc.py b/services/spam_svc.py
index 9a62cb9..e916830 100644
--- a/services/spam_svc.py
+++ b/services/spam_svc.py
@@ -12,12 +12,9 @@
import collections
import logging
import settings
-import sys
from collections import defaultdict
-from features import filterrules_helpers
from framework import sql
-from framework import framework_constants
from infra_libs import ts_mon
from services import ml_helpers
@@ -110,7 +107,7 @@
"""
return self.LookupIssuesFlaggers(cnxn, [issue_id])[issue_id]
- def LookupIssueFlagCounts(self, cnxn, issue_ids):
+ def _LookupIssueFlagCounts(self, cnxn, issue_ids):
"""Returns a map of issue_id to flag counts"""
rows = self.report_tbl.Select(cnxn, cols=['issue_id', 'COUNT(*)'],
issue_id=issue_ids, group_by=['issue_id'])
@@ -193,7 +190,7 @@
# Now record new verdicts and update issue.is_spam, if they've changed.
ids = [issue.issue_id for issue in issues]
- counts = self.LookupIssueFlagCounts(cnxn, ids)
+ counts = self._LookupIssueFlagCounts(cnxn, ids)
previous_verdicts = self.LookupIssueVerdicts(cnxn, ids)
for issue_id in counts:
@@ -467,62 +464,6 @@
return {'confidence_is_spam': 0.0,
'failed_open': False}
- def GetIssueClassifierQueue(
- self, cnxn, _issue_service, project_id, offset=0, limit=10):
- """Returns list of recent issues with spam verdicts,
- ranked in ascending order of confidence (so uncertain items are first).
- """
- # TODO(seanmccullough): Optimize pagination. This query probably gets
- # slower as the number of SpamVerdicts grows, regardless of offset
- # and limit values used here. Using offset,limit in general may not
- # be the best way to do this.
- issue_results = self.verdict_tbl.Select(
- cnxn,
- cols=[
- 'issue_id', 'is_spam', 'reason', 'classifier_confidence', 'created'
- ],
- where=[
- ('project_id = %s', [project_id]),
- (
- 'classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ],
- order_by=[
- ('classifier_confidence ASC', []),
- ('created ASC', []),
- ],
- group_by=['issue_id'],
- offset=offset,
- limit=limit,
- )
-
- ret = []
- for row in issue_results:
- ret.append(
- ModerationItem(
- issue_id=int(row[0]),
- is_spam=row[1] == 1,
- reason=row[2],
- classifier_confidence=row[3],
- verdict_time='%s' % row[4],
- ))
-
- count = self.verdict_tbl.SelectValue(
- cnxn,
- col='COUNT(*)',
- where=[
- ('project_id = %s', [project_id]),
- (
- 'classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ])
-
- return ret, count
-
def GetIssueFlagQueue(
self, cnxn, _issue_service, project_id, offset=0, limit=10):
"""Returns list of recent issues that have been flagged by users"""
diff --git a/services/test/caches_test.py b/services/test/caches_test.py
index 4ced369..cd401be 100644
--- a/services/test/caches_test.py
+++ b/services/test/caches_test.py
@@ -8,13 +8,11 @@
from __future__ import division
from __future__ import absolute_import
-import fakeredis
import unittest
from google.appengine.api import memcache
from google.appengine.ext import testbed
-import settings
from services import caches
from testing import fake
@@ -145,21 +143,9 @@
class TestableTwoLevelCache(caches.AbstractTwoLevelCache):
- def __init__(
- self,
- cache_manager,
- kind,
- max_size=None,
- use_redis=False,
- redis_client=None):
+ def __init__(self, cache_manager, kind, max_size=None):
super(TestableTwoLevelCache, self).__init__(
- cache_manager,
- kind,
- 'testable:',
- None,
- max_size=max_size,
- use_redis=use_redis,
- redis_client=redis_client)
+ cache_manager, kind, 'testable:', None, max_size=max_size)
# pylint: disable=unused-argument
def FetchItems(self, cnxn, keys, **kwargs):
@@ -295,124 +281,3 @@
self.testable_2lc.InvalidateAllRamEntries(self.cnxn)
self.assertFalse(self.testable_2lc.HasItem(123))
self.assertFalse(self.testable_2lc.HasItem(124))
-
-
-class AbstractTwoLevelCacheTest_Redis(unittest.TestCase):
-
- def setUp(self):
- self.cnxn = 'fake connection'
- self.cache_manager = fake.CacheManager()
-
- self.server = fakeredis.FakeServer()
- self.fake_redis_client = fakeredis.FakeRedis(server=self.server)
- self.testable_2lc = TestableTwoLevelCache(
- self.cache_manager,
- 'issue',
- use_redis=True,
- redis_client=self.fake_redis_client)
-
- def tearDown(self):
- self.fake_redis_client.flushall()
-
- def testCacheItem(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.assertEqual(12300, self.testable_2lc.cache.cache[123])
-
- def testHasItem(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.assertTrue(self.testable_2lc.HasItem(123))
- self.assertFalse(self.testable_2lc.HasItem(444))
- self.assertFalse(self.testable_2lc.HasItem(999))
-
- def testWriteToRedis_Normal(self):
- retrieved_dict = {123: 12300, 124: 12400}
- self.testable_2lc._WriteToRedis(retrieved_dict)
- actual_123, _ = self.testable_2lc._ReadFromRedis([123])
- self.assertEqual(12300, actual_123[123])
- actual_124, _ = self.testable_2lc._ReadFromRedis([124])
- self.assertEqual(12400, actual_124[124])
-
- def testWriteToRedis_str(self):
- retrieved_dict = {111: 'foo', 222: 'bar'}
- self.testable_2lc._WriteToRedis(retrieved_dict)
- actual_111, _ = self.testable_2lc._ReadFromRedis([111])
- self.assertEqual('foo', actual_111[111])
- actual_222, _ = self.testable_2lc._ReadFromRedis([222])
- self.assertEqual('bar', actual_222[222])
-
- def testWriteToRedis_ProtobufInt(self):
- self.testable_2lc.pb_class = int
- retrieved_dict = {123: 12300, 124: 12400}
- self.testable_2lc._WriteToRedis(retrieved_dict)
- actual_123, _ = self.testable_2lc._ReadFromRedis([123])
- self.assertEqual(12300, actual_123[123])
- actual_124, _ = self.testable_2lc._ReadFromRedis([124])
- self.assertEqual(12400, actual_124[124])
-
- def testWriteToRedis_List(self):
- retrieved_dict = {123: [1, 2, 3], 124: [1, 2, 4]}
- self.testable_2lc._WriteToRedis(retrieved_dict)
- actual_123, _ = self.testable_2lc._ReadFromRedis([123])
- self.assertEqual([1, 2, 3], actual_123[123])
- actual_124, _ = self.testable_2lc._ReadFromRedis([124])
- self.assertEqual([1, 2, 4], actual_124[124])
-
- def testWriteToRedis_Dict(self):
- retrieved_dict = {123: {'ham': 2, 'spam': 3}, 124: {'eggs': 2, 'bean': 4}}
- self.testable_2lc._WriteToRedis(retrieved_dict)
- actual_123, _ = self.testable_2lc._ReadFromRedis([123])
- self.assertEqual({'ham': 2, 'spam': 3}, actual_123[123])
- actual_124, _ = self.testable_2lc._ReadFromRedis([124])
- self.assertEqual({'eggs': 2, 'bean': 4}, actual_124[124])
-
- def testGetAll_FetchGetsIt(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- # Clear the RAM cache so that we find items in redis.
- self.testable_2lc.cache.LocalInvalidateAll()
- self.testable_2lc.CacheItem(125, 12500)
- hits, misses = self.testable_2lc.GetAll(self.cnxn, [123, 124, 333, 444])
- self.assertEqual({123: 12300, 124: 12400, 333: 333, 444: 444}, hits)
- self.assertEqual([], misses)
- # The RAM cache now has items found in redis and DB.
- self.assertItemsEqual(
- [123, 124, 125, 333, 444], list(self.testable_2lc.cache.cache.keys()))
-
- def testGetAll_FetchGetsItFromDB(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- hits, misses = self.testable_2lc.GetAll(self.cnxn, [123, 124, 333, 444])
- self.assertEqual({123: 12300, 124: 12400, 333: 333, 444: 444}, hits)
- self.assertEqual([], misses)
-
- def testGetAll_FetchDoesNotFindIt(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- hits, misses = self.testable_2lc.GetAll(self.cnxn, [123, 124, 999])
- self.assertEqual({123: 12300, 124: 12400}, hits)
- self.assertEqual([999], misses)
-
- def testInvalidateKeys(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- self.testable_2lc.CacheItem(125, 12500)
- self.testable_2lc.InvalidateKeys(self.cnxn, [124])
- self.assertEqual(2, len(self.testable_2lc.cache.cache))
- self.assertNotIn(124, self.testable_2lc.cache.cache)
- self.assertEqual(self.cache_manager.last_call,
- ('StoreInvalidateRows', self.cnxn, 'issue', [124]))
-
- def testGetAllAlreadyInRam(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- hits, misses = self.testable_2lc.GetAllAlreadyInRam(
- [123, 124, 333, 444, 999])
- self.assertEqual({123: 12300, 124: 12400}, hits)
- self.assertEqual([333, 444, 999], misses)
-
- def testInvalidateAllRamEntries(self):
- self.testable_2lc.CacheItem(123, 12300)
- self.testable_2lc.CacheItem(124, 12400)
- self.testable_2lc.InvalidateAllRamEntries(self.cnxn)
- self.assertFalse(self.testable_2lc.HasItem(123))
- self.assertFalse(self.testable_2lc.HasItem(124))
diff --git a/services/test/spam_svc_test.py b/services/test/spam_svc_test.py
index 3aeba13..67b53cf 100644
--- a/services/test/spam_svc_test.py
+++ b/services/test/spam_svc_test.py
@@ -233,86 +233,6 @@
self.assertNotIn(issue, self.issue_service.updated_issues)
self.assertEqual(True, issue.is_spam)
- def testGetIssueClassifierQueue_noVerdicts(self):
- self.mock_verdict_tbl.Select(self.cnxn,
- cols=['issue_id', 'is_spam', 'reason', 'classifier_confidence',
- 'created'],
- where=[
- ('project_id = %s', [789]),
- ('classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ],
- order_by=[
- ('classifier_confidence ASC', []),
- ('created ASC', [])
- ],
- group_by=['issue_id'],
- offset=0,
- limit=10,
- ).AndReturn([])
-
- self.mock_verdict_tbl.SelectValue(self.cnxn,
- col='COUNT(*)',
- where=[
- ('project_id = %s', [789]),
- ('classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ]).AndReturn(0)
-
- self.mox.ReplayAll()
- res, count = self.spam_service.GetIssueClassifierQueue(
- self.cnxn, self.issue_service, 789)
- self.mox.VerifyAll()
-
- self.assertEqual([], res)
- self.assertEqual(0, count)
-
- def testGetIssueClassifierQueue_someVerdicts(self):
- self.mock_verdict_tbl.Select(self.cnxn,
- cols=['issue_id', 'is_spam', 'reason', 'classifier_confidence',
- 'created'],
- where=[
- ('project_id = %s', [789]),
- ('classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ],
- order_by=[
- ('classifier_confidence ASC', []),
- ('created ASC', [])
- ],
- group_by=['issue_id'],
- offset=0,
- limit=10,
- ).AndReturn([[78901, 0, "classifier", 0.9, "2015-12-10 11:06:24"]])
-
- self.mock_verdict_tbl.SelectValue(self.cnxn,
- col='COUNT(*)',
- where=[
- ('project_id = %s', [789]),
- ('classifier_confidence <= %s',
- [settings.classifier_moderation_thresh]),
- ('overruled = %s', [False]),
- ('issue_id IS NOT NULL', []),
- ]).AndReturn(10)
-
- self.mox.ReplayAll()
- res, count = self.spam_service.GetIssueClassifierQueue(
- self.cnxn, self.issue_service, 789)
- self.mox.VerifyAll()
- self.assertEqual(1, len(res))
- self.assertEqual(10, count)
- self.assertEqual(78901, res[0].issue_id)
- self.assertEqual(False, res[0].is_spam)
- self.assertEqual("classifier", res[0].reason)
- self.assertEqual(0.9, res[0].classifier_confidence)
- self.assertEqual("2015-12-10 11:06:24", res[0].verdict_time)
-
def testIsExempt_RegularUser(self):
author = user_pb2.MakeUser(111, email='test@example.com')
self.assertFalse(self.spam_service._IsExempt(author, False))
diff --git a/settings.py b/settings.py
index f8fa130..0759364 100644
--- a/settings.py
+++ b/settings.py
@@ -191,11 +191,6 @@
# sometimes useful to run a tainted version on staging that has a separate
# memcache namespace. E.g., os.environ.get('CURRENT_VERSION_ID')
memcache_namespace = None # Should be None when committed.
-redis_namespace = None
-
-# Default Redis host and port
-redis_host = 'localhost'
-redis_port = '6379'
# Recompute derived issue fields via work items rather than while
# the user is waiting for a page to load.
@@ -306,30 +301,14 @@
analytics_id = ''
branded_domains = branded_domains_prod
domain_to_default_project = domain_to_default_project_prod
- # For each of these redis_hosts, they must match the corresponding
- # HOST address of the redis instance for the environment. You can use
- # the following command to find it.
- # ```
- # gcloud redis instances list --project monorail-staging \
- # --region us-central1
- # ````
- # Leaving empty for now
- redis_host = ''
+
elif app_id == 'monorail-staging':
site_name = 'Monorail Staging'
banner_message = 'This staging site does not send emails.'
# The Google Cloud SQL databases to use.
db_cloud_project = app_id
- branded_domains = branded_domains
- domain_to_default_project = domain_to_default_project
- # For each of these redis_hosts, they must match the corresponding
- # HOST address of the redis instance for the environment. You can use
- # the following command to find it.
- # ```
- # gcloud redis instances list --project monorail-staging \
- # --region us-central1
- # ````
- redis_host = '10.228.109.51'
+ branded_domains = branded_domains_staging
+ domain_to_default_project = domain_to_default_project_staging
elif app_id == 'monorail-dev':
site_name = 'Monorail Dev'
@@ -338,15 +317,12 @@
db_cloud_project = app_id
branded_domains = branded_domains
domain_to_default_project = domain_to_default_project
- # See comment above on how to find this address.
- redis_host = '10.150.170.251'
# Use replicas created when testing the restore procedures on 2021-02-24
db_replica_prefix = 'replica-2'
if local_mode:
site_name = 'Monorail Local'
num_logical_shards = 10
- redis_host = 'localhost'
# Run cloud tasks emulator at port 9090
CLOUD_TASKS_EMULATOR_ADDRESS = '127.0.0.1:9090'
CLOUD_TASKS_REGION = 'us-central1'
@@ -439,12 +415,6 @@
# The name of the spam model in ML Engine.
spam_model_name = 'spam_only_words'
-# The name of the component model in ML Engine
-component_model_name = 'component_top_words'
-
-# The name of the gcs bucket containing component predicition trainer code.
-component_ml_bucket = classifier_project_id + '-mlengine'
-
ratelimiting_enabled = True
# Requests that hit ratelimiting_cost_thresh_sec get one extra count
diff --git a/sitewide/custom_404.py b/sitewide/custom_404.py
index 397bd1d..557d1ff 100644
--- a/sitewide/custom_404.py
+++ b/sitewide/custom_404.py
@@ -15,8 +15,9 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
from framework import exceptions
+from framework import flaskservlet
from framework import servlet
@@ -37,5 +38,8 @@
if not mr.project_name:
raise exceptions.InputException('No project specified')
return {
- 'http_response_code': httplib.NOT_FOUND,
- }
+ 'http_response_code': http_client.NOT_FOUND,
+ }
+
+ # def Get404Page(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/groupadmin.py b/sitewide/groupadmin.py
index 32ba007..3e8bcce 100644
--- a/sitewide/groupadmin.py
+++ b/sitewide/groupadmin.py
@@ -13,6 +13,7 @@
import ezt
+from framework import flaskservlet
from framework import framework_helpers
from framework import permissions
from framework import servlet
@@ -121,3 +122,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, '/g/%s%s' % (group_name, urls.GROUP_ADMIN),
include_project=False, saved=1, ts=int(time.time()))
+
+ # def GetGroupAdmin(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostGroupAdmin(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/groupcreate.py b/sitewide/groupcreate.py
index 2dac146..ce0f151 100644
--- a/sitewide/groupcreate.py
+++ b/sitewide/groupcreate.py
@@ -11,7 +11,7 @@
import logging
import re
-from framework import exceptions
+from framework import exceptions, flaskservlet
from framework import framework_helpers
from framework import permissions
from framework import servlet
@@ -102,3 +102,9 @@
# Go to the new user group's detail page.
return framework_helpers.FormatAbsoluteURL(
mr, '/g/%s/' % group_id, include_project=False)
+
+ # def GetGroupCreate(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostGroupCreate(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/groupdetail.py b/sitewide/groupdetail.py
index b28baa9..4428a53 100644
--- a/sitewide/groupdetail.py
+++ b/sitewide/groupdetail.py
@@ -14,6 +14,7 @@
import ezt
from framework import exceptions
+from framework import flaskservlet
from framework import framework_helpers
from framework import framework_views
from framework import paginate
@@ -189,6 +190,8 @@
"""
# 1. Gather data from the request.
remove_strs = post_data.getall('remove')
+ # TODO(crbug.com/monorail/10936): getall in Flask is getlist
+ # remove_strs = post_data.getlist('remove')
logging.info('remove_strs = %r', remove_strs)
if not remove_strs:
@@ -208,3 +211,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, '/g/%s/' % mr.viewed_username, include_project=False,
saved=1, ts=int(time.time()))
+
+ # def GetGroupDetail(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostGroupDetail(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/grouplist.py b/sitewide/grouplist.py
index 3adfaa3..57c46e9 100644
--- a/sitewide/grouplist.py
+++ b/sitewide/grouplist.py
@@ -13,7 +13,7 @@
import ezt
-from framework import framework_helpers
+from framework import flaskservlet, framework_helpers
from framework import permissions
from framework import servlet
from framework import urls
@@ -66,6 +66,8 @@
'User is not permitted to delete groups')
remove_groups = [int(g) for g in post_data.getall('remove')]
+ # TODO(crbug.com/monorail/10936): getall in Flask is getlist
+ # remove_groups = [int(g) for g in post_data.getlist('remove')]
if not mr.errors.AnyErrors():
self.services.usergroup.DeleteGroups(mr.cnxn, remove_groups)
@@ -76,3 +78,75 @@
return framework_helpers.FormatAbsoluteURL(
mr, '/g', include_project=False,
saved=1, ts=int(time.time()))
+
+ # def GetGroupList(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostGroupList(self, **kwargs):
+ # return self.handler(**kwargs)
+
+
+class GroupDelete(flaskservlet.FlaskServlet):
+ """Shows a page with a simple form to create a user group."""
+
+ _PAGE_TEMPLATE = 'sitewide/group-list-page.ezt'
+
+ def AssertBasePermission(self, mr):
+ """Assert that the user has the permissions needed to view this page."""
+ super(GroupDelete, self).AssertBasePermission(mr)
+
+ if not mr.perms.HasPerm(permissions.VIEW_GROUP, None, None):
+ raise permissions.PermissionException(
+ 'User is not allowed to view list of user groups')
+
+ def GatherPageData(self, mr):
+ """Build up a dictionary of data values to use when rendering the page."""
+ group_views = [
+ sitewide_views.GroupView(*groupinfo)
+ for groupinfo in self.services.usergroup.GetAllUserGroupsInfo(mr.cnxn)
+ ]
+ group_views.sort(key=lambda gv: gv.name)
+ offer_group_deletion = mr.perms.CanUsePerm(
+ permissions.DELETE_GROUP, mr.auth.effective_ids, None, [])
+ offer_group_creation = mr.perms.CanUsePerm(
+ permissions.CREATE_GROUP, mr.auth.effective_ids, None, [])
+
+ return {
+ 'form_token':
+ xsrf.GenerateToken(mr.auth.user_id, '%s.do' % urls.GROUP_DELETE),
+ 'groups':
+ group_views,
+ 'offer_group_deletion':
+ ezt.boolean(offer_group_deletion),
+ 'offer_group_creation':
+ ezt.boolean(offer_group_creation),
+ }
+
+ def ProcessFormData(self, mr, post_data):
+ """Process the posted form."""
+ if 'removebtn' in post_data:
+ return self.ProcessDeleteGroups(mr, post_data)
+
+ def ProcessDeleteGroups(self, mr, post_data):
+ """Process request to delete groups."""
+ if not mr.perms.CanUsePerm(permissions.DELETE_GROUP, mr.auth.effective_ids,
+ None, []):
+ raise permissions.PermissionException(
+ 'User is not permitted to delete groups')
+
+ remove_groups = [int(g) for g in post_data.getlist('remove')]
+
+ if not mr.errors.AnyErrors():
+ self.services.usergroup.DeleteGroups(mr.cnxn, remove_groups)
+
+ if mr.errors.AnyErrors():
+ self.PleaseCorrect(mr)
+ else:
+ return framework_helpers.FormatAbsoluteURL(
+ mr, '/g', include_project=False, saved=1, ts=int(time.time()))
+
+ def GetGroupDelete(self, **kwargs):
+ return self.handler(**kwargs)
+
+ def PostGroupDelete(self, **kwargs):
+ return self.handler(**kwargs)
diff --git a/sitewide/hostinghome.py b/sitewide/hostinghome.py
index 4a0a47d..b744935 100644
--- a/sitewide/hostinghome.py
+++ b/sitewide/hostinghome.py
@@ -14,16 +14,14 @@
import settings
from businesslogic import work_env
from framework import exceptions
+from framework import flaskservlet
from framework import permissions
-from framework import servlet
-from framework import template_helpers
from framework import urls
from project import project_views
from sitewide import projectsearch
-from sitewide import sitewide_helpers
-class HostingHome(servlet.Servlet):
+class HostingHome(flaskservlet.FlaskServlet):
"""HostingHome shows the project list and link to create a project."""
_PAGE_TEMPLATE = 'sitewide/hosting-home-page.ezt'
@@ -105,3 +103,6 @@
project_url = '/p/%s' % project_name
self.redirect(project_url, abort=True)
return 'Redirected to %r' % project_url
+
+ def GetOldHostingHome(self, **kwargs):
+ return self.handler(**kwargs)
diff --git a/sitewide/moved.py b/sitewide/moved.py
index 3f63d24..968422c 100644
--- a/sitewide/moved.py
+++ b/sitewide/moved.py
@@ -13,7 +13,7 @@
import logging
-from framework import exceptions
+from framework import exceptions, flaskservlet
from framework import framework_helpers
from framework import servlet
from framework import urls
@@ -60,3 +60,6 @@
'project_name': mr.specified_project,
'moved_to_url': moved_to_url,
}
+
+ # def GetProjectMoved(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/projectcreate.py b/sitewide/projectcreate.py
index 83862f6..c3f8cca 100644
--- a/sitewide/projectcreate.py
+++ b/sitewide/projectcreate.py
@@ -15,7 +15,7 @@
import settings
from businesslogic import work_env
-from framework import exceptions
+from framework import exceptions, flaskservlet
from framework import filecontent
from framework import framework_helpers
from framework import gcs_helpers
@@ -155,3 +155,9 @@
# Go to the new project's introduction page.
return framework_helpers.FormatAbsoluteURL(
mr, urls.ADMIN_INTRO, project_name=project_name)
+
+ # def GetCreateProject(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostCreateProject(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/test/custom_404_test.py b/sitewide/test/custom_404_test.py
index 71b52f8..b47501d 100644
--- a/sitewide/test/custom_404_test.py
+++ b/sitewide/test/custom_404_test.py
@@ -8,7 +8,7 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
+from six.moves import http_client
import unittest
from framework import exceptions
@@ -39,6 +39,4 @@
_, mr = testing_helpers.GetRequestObjects(path='/p/proj/junk')
page_data = self.servlet.GatherPageData(mr)
- self.assertEqual(
- {'http_response_code': httplib.NOT_FOUND},
- page_data)
+ self.assertEqual({'http_response_code': http_client.NOT_FOUND}, page_data)
diff --git a/sitewide/test/hostinghome_test.py b/sitewide/test/hostinghome_test.py
index f51c9ec..de125a5 100644
--- a/sitewide/test/hostinghome_test.py
+++ b/sitewide/test/hostinghome_test.py
@@ -47,7 +47,7 @@
self.project_a = self.services.project.TestAddProject('a', project_id=1)
self.project_b = self.services.project.TestAddProject('b', project_id=2)
- self.servlet = hostinghome.HostingHome('req', 'res', services=self.services)
+ self.servlet = hostinghome.HostingHome(services=self.services)
self.mr = testing_helpers.MakeMonorailRequest(user_info={'user_id': 111})
self.orig_pipeline_class = projectsearch.ProjectSearchPipeline
diff --git a/sitewide/test/userprofile_test.py b/sitewide/test/userprofile_test.py
index b830fb7..b4e29d8 100644
--- a/sitewide/test/userprofile_test.py
+++ b/sitewide/test/userprofile_test.py
@@ -49,6 +49,7 @@
mr.viewed_user_auth.user_view = framework_views.UserView(viewed_user_pb)
mr.viewed_user_name = viewed_user_name
mr.request = webapp2.Request.blank("/")
+ mr.request_path = mr.request.path
return mr
diff --git a/sitewide/userclearbouncing.py b/sitewide/userclearbouncing.py
index 3decdf4..0ae5f4a 100644
--- a/sitewide/userclearbouncing.py
+++ b/sitewide/userclearbouncing.py
@@ -12,6 +12,7 @@
import time
from framework import framework_helpers
+from framework import flaskservlet
from framework import permissions
from framework import servlet
from framework import timestr
@@ -60,3 +61,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, mr.viewed_user_auth.user_view.profile_url, include_project=False,
saved=1, ts=int(time.time()))
+
+ # def GetUserClearBouncingPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostUserClearBouncingPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/userprofile.py b/sitewide/userprofile.py
index bf68c5f..2723e9e 100644
--- a/sitewide/userprofile.py
+++ b/sitewide/userprofile.py
@@ -17,6 +17,7 @@
import settings
from businesslogic import work_env
from framework import framework_helpers
+from framework import flaskservlet
from framework import framework_views
from framework import permissions
from framework import servlet
@@ -146,9 +147,9 @@
ban_token = None
ban_spammer_token = None
if mr.auth.user_id and can_ban:
- form_token_path = mr.request.path + 'ban.do'
+ form_token_path = mr.request_path + 'ban.do'
ban_token = xsrf.GenerateToken(mr.auth.user_id, form_token_path)
- form_token_path = mr.request.path + 'banSpammer.do'
+ form_token_path = mr.request_path + 'banSpammer.do'
ban_spammer_token = xsrf.GenerateToken(mr.auth.user_id, form_token_path)
can_delete_user = permissions.CanExpungeUsers(mr)
@@ -230,6 +231,12 @@
mr, mr.viewed_user_auth.user_view.profile_url, include_project=False,
saved=1, ts=int(time.time()))
+ # def GetUserProfilePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostUserProfilePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
def _ComputePossibleParentAccounts(
we, user_view, linked_parent, linked_children):
@@ -245,13 +252,6 @@
found_emails = [user.email for user in found_users]
return found_emails
-
-class UserProfilePolymer(UserProfile):
- """New Polymer version of user profiles in Monorail."""
-
- _PAGE_TEMPLATE = 'sitewide/user-profile-page-polymer.ezt'
-
-
class BanUser(servlet.Servlet):
"""Bans or un-bans a user."""
@@ -269,3 +269,6 @@
return framework_helpers.FormatAbsoluteURL(
mr, mr.viewed_user_auth.user_view.profile_url, include_project=False,
saved=1, ts=int(time.time()))
+
+ # def PostBanUserPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/sitewide/usersettings.py b/sitewide/usersettings.py
index bb65ddd..8484afc 100644
--- a/sitewide/usersettings.py
+++ b/sitewide/usersettings.py
@@ -9,7 +9,7 @@
from __future__ import absolute_import
import time
-import urllib
+from six.moves import urllib
import ezt
@@ -63,3 +63,13 @@
saved=1, ts=int(time.time()))
return url
+
+ # pylint: disable=unused-argument
+ def GetUserSetting(self, **kwargs):
+ return
+ # return self.handler(**kwargs)
+
+ # pylint: disable=unused-argument
+ def PostUserSetting(self, **kwargs):
+ return
+ # return self.handler(**kwargs)
diff --git a/sitewide/userupdates.py b/sitewide/userupdates.py
index ac44c0f..b970614 100644
--- a/sitewide/userupdates.py
+++ b/sitewide/userupdates.py
@@ -22,6 +22,7 @@
from businesslogic import work_env
from features import activities
from framework import servlet
+from framework import flaskservlet
from framework import urls
from sitewide import sitewide_helpers
@@ -87,6 +88,9 @@
viewed_user_id=mr.viewed_user_auth.user_id)
return [project.project_id for project in starred_projects]
+ # def GetUserUpdatesProjectsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class UserUpdatesDevelopers(AbstractUserUpdatesPage):
"""Shows a page of updates from developers starred by a user."""
@@ -104,6 +108,9 @@
logging.debug('StarredUsers: %r', user_ids)
return user_ids
+ # def GetUserUpdatesDevelopersPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class UserUpdatesIndividual(AbstractUserUpdatesPage):
"""Shows a page of updates initiated by a user."""
@@ -116,3 +123,6 @@
def _GetUserIDsForUpdates(self, mr):
"""Returns a list of user IDs whom to retrieve activities from."""
return [mr.viewed_user_auth.user_id]
+
+ # def GetUserUpdatesPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.js b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.js
index 69ef43f..d9cec5e 100644
--- a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.js
+++ b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import {LitElement, html} from 'lit-element';
+import {LitElement, html, css} from 'lit-element';
import debounce from 'debounce';
import {store, connectStore} from 'reducers/base.js';
@@ -37,11 +37,66 @@
blockingRefs = blockingRefs.concat(issue.danglingBlockingRefs);
}
+ let migratedNotice = html``;
+ if (this._isMigrated) {
+ migratedNotice = html`
+ <div class="migrated-banner">
+ <i
+ class="warning-icon material-icons"
+ icon="warning"
+ >warning</i>
+ <p>
+ This issue has moved to
+ ${this._migratedLink}. Updates should be posted in
+ ${this._migratedLink}.
+ </p>
+ </div>
+ <chops-button
+ class="legacy-edit"
+ @click=${this._allowLegacyEdits}
+ >
+ I want to edit the old version of this issue.
+ </chops-button>
+ `;
+ }
+
return html`
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
+ rel="stylesheet">
+ <style>
+ mr-edit-issue .migrated-banner {
+ width: 100%;
+ background-color: var(--chops-orange-50);
+ border: var(--chops-normal-border);
+ border-top: 0;
+ font-size: var(--chops-main-font-size);
+ padding: 0.25em 8px;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ margin-bottom: 1em;
+ }
+ mr-edit-issue i.material-icons {
+ color: var(--chops-primary-icon-color);
+ font-size: var(--chops-icon-font-size);
+ }
+ mr-edit-issue .warning-icon {
+ margin-right: 4px;
+ }
+ mr-edit-issue .legacy-edit {
+ margin-bottom: 2em;
+ }
+ </style>
<h2 id="makechanges" class="medium-heading">
<a href="#makechanges">Add a comment and make changes</a>
</h2>
+
+ ${migratedNotice}
+
<mr-edit-metadata
+ ?hidden=${this._isMigrated && !this._editLegacyIssue}
formName="Issue Edit"
.ownerName=${this._ownerDisplayName(this.issue.ownerRef)}
.cc=${issue.ccRefs}
@@ -69,6 +124,12 @@
static get properties() {
return {
/**
+ * ID of an Issue Tracker issue that the issue migrated to.
+ */
+ migratedId: {
+ type: String,
+ },
+ /**
* All comments, including descriptions.
*/
comments: {
@@ -113,6 +174,9 @@
_fieldDefs: {
type: Array,
},
+ _editLegacyIssue: {
+ type: Boolean,
+ },
};
}
@@ -124,6 +188,8 @@
this.updateError = '';
this.presubmitDebounceTimeOut = DEBOUNCED_PRESUBMIT_TIME_OUT;
+
+ this._editLegacyIssue = false;
}
/** @override */
@@ -144,6 +210,8 @@
/** @override */
stateChanged(state) {
+ this.migratedId = issueV0.migratedId(state);
+
this.issue = issueV0.viewedIssue(state);
this.issueRef = issueV0.viewedIssueRef(state);
this.comments = issueV0.comments(state);
@@ -272,6 +340,28 @@
}
/**
+ * @return {boolean} Whether this issue is migrated or not.
+ */
+ get _isMigrated() {
+ return this.migratedId && this.migratedId !== '';
+ }
+
+ /**
+ * @return {string} the link of the issue in Issue Tracker.
+ */
+ get _migratedLink() {
+ return html`<a href="https://issuetracker.google.com/issues/${this.migratedId}">b/${this.migratedId}</a>`;
+ }
+
+ /**
+ * Let the user override th edit form being hidden, in case of mistakes or
+ * similar.
+ */
+ _allowLegacyEdits() {
+ this._editLegacyIssue = true;
+ }
+
+ /**
* Gets the displayName of the owner. Only uses the displayName if a
* userId also exists in the ref.
* @param {UserRef} ownerRef The owner of the issue.
diff --git a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.test.js b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.test.js
index a3216ca..880064b 100644
--- a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.test.js
+++ b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-issue.test.js
@@ -295,4 +295,47 @@
{label: 'restrict-view-people'},
]));
});
+
+ describe('migrated issue', () => {
+ it('does not show notice if issue not migrated', async () => {
+ element.migratedId = '';
+
+ await element.updateComplete;
+
+ assert.isNull(element.querySelector('.migrated-banner'));
+ assert.isNull(element.querySelector('.legacy-edit'));
+ });
+
+ it('shows notice if issue migrated', async () => {
+ element.migratedId = '1234';
+
+ await element.updateComplete;
+
+ assert.isNotNull(element.querySelector('.migrated-banner'));
+ assert.isNotNull(element.querySelector('.legacy-edit'));
+ });
+
+ it('hides edit form if issue migrated', async () => {
+ element.migratedId = '1234';
+
+ await element.updateComplete;
+
+ const editForm = element.querySelector('mr-edit-metadata');
+ assert.isTrue(editForm.hasAttribute('hidden'));
+ });
+
+ it('unhides edit form on button click', async () => {
+ element.migratedId = '1234';
+
+ await element.updateComplete;
+
+ const button = element.querySelector('.legacy-edit');
+ button.click();
+
+ await element.updateComplete;
+
+ const editForm = element.querySelector('mr-edit-metadata');
+ assert.isFalse(editForm.hasAttribute('hidden'));
+ });
+ });
});
diff --git a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-metadata.js b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-metadata.js
index 2bc79a3..7877007 100644
--- a/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-metadata.js
+++ b/static_src/elements/issue-detail/metadata/mr-edit-metadata/mr-edit-metadata.js
@@ -61,6 +61,9 @@
display: block;
font-size: var(--chops-main-font-size);
}
+ mr-edit-metadata[hidden] {
+ display: none;
+ }
mr-edit-metadata.edit-actions-right .edit-actions {
flex-direction: row-reverse;
text-align: right;
diff --git a/static_src/elements/issue-detail/mr-issue-page/mr-issue-page.js b/static_src/elements/issue-detail/mr-issue-page/mr-issue-page.js
index a93822b..88cb92c 100644
--- a/static_src/elements/issue-detail/mr-issue-page/mr-issue-page.js
+++ b/static_src/elements/issue-detail/mr-issue-page/mr-issue-page.js
@@ -8,6 +8,7 @@
import 'elements/chops/chops-button/chops-button.js';
import './mr-issue-header.js';
import './mr-restriction-indicator';
+import './mr-migrated-banner';
import '../mr-issue-details/mr-issue-details.js';
import '../metadata/mr-metadata/mr-issue-metadata.js';
import '../mr-launch-overview/mr-launch-overview.js';
@@ -245,6 +246,7 @@
.userDisplayName=${this.userDisplayName}
></mr-issue-header>
<mr-restriction-indicator></mr-restriction-indicator>
+ <mr-migrated-banner></mr-migrated-banner>
</div>
<div class="container-issue-content">
<mr-issue-details
diff --git a/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.js b/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.js
new file mode 100644
index 0000000..e27a5fe
--- /dev/null
+++ b/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.js
@@ -0,0 +1,107 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {LitElement, html, css} from 'lit-element';
+
+import {connectStore} from 'reducers/base.js';
+import * as issueV0 from 'reducers/issueV0.js';
+import {SHARED_STYLES} from 'shared/shared-styles.js';
+
+
+/**
+ * `<mr-migrated-banner>`
+ *
+ * Display for showing whether an issue is restricted.
+ *
+ */
+export class MrMigratedBanner extends connectStore(LitElement) {
+ /** @override */
+ static get styles() {
+ return [
+ SHARED_STYLES,
+ css`
+ :host {
+ width: 100%;
+ margin-top: 0;
+ background-color: var(--chops-orange-50);
+ border-bottom: var(--chops-normal-border);
+ font-size: var(--chops-main-font-size);
+ padding: 0.25em 8px;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ }
+ :host([hidden]) {
+ display: none;
+ }
+ i.material-icons {
+ color: var(--chops-primary-icon-color);
+ font-size: var(--chops-icon-font-size);
+ }
+ .warning-icon {
+ margin-right: 4px;
+ }
+ `,
+ ];
+ }
+
+ /** @override */
+ render() {
+ return html`
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
+ rel="stylesheet">
+ <i
+ class="warning-icon material-icons"
+ icon="warning"
+ >warning</i>
+ <p>
+ This issue has been migrated to ${this._link}. Please see
+ ${this._link} for the latest version of this discussion.
+ </p>
+ `;
+ }
+
+ /** @override */
+ static get properties() {
+ return {
+ migratedId: {type: String},
+ hidden: {
+ type: Boolean,
+ reflect: true,
+ },
+ };
+ }
+
+ /** @override */
+ constructor() {
+ super();
+
+ this.hidden = true;
+ }
+
+ /** @override */
+ stateChanged(state) {
+ this.migratedId = issueV0.migratedId(state);
+ }
+
+ /** @override */
+ update(changedProperties) {
+ if (changedProperties.has('migratedId')) {
+ this.hidden = !this.migratedId || this.migratedId === '';
+ }
+
+ super.update(changedProperties);
+ }
+
+ /**
+ * @return {string} the link of the issue in Issue Tracker.
+ */
+ get _link() {
+ return html`<a href="https://issuetracker.google.com/issues/${this.migratedId}">b/${this.migratedId}</a>`;
+ }
+}
+
+customElements.define('mr-migrated-banner', MrMigratedBanner);
diff --git a/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.test.js b/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.test.js
new file mode 100644
index 0000000..4cceb2b
--- /dev/null
+++ b/static_src/elements/issue-detail/mr-issue-page/mr-migrated-banner.test.js
@@ -0,0 +1,43 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert} from 'chai';
+import {MrMigratedBanner} from './mr-migrated-banner.js';
+
+let element;
+
+describe('mr-migrated-banner', () => {
+ beforeEach(() => {
+ element = document.createElement('mr-migrated-banner');
+ document.body.appendChild(element);
+ });
+
+ afterEach(() => {
+ document.body.removeChild(element);
+ });
+
+ it('initializes', () => {
+ assert.instanceOf(element, MrMigratedBanner);
+ });
+
+ it('hides element by default', async () => {
+ await element.updateComplete;
+
+ assert.isTrue(element.hasAttribute('hidden'));
+ });
+
+ it('hides element when migratedId is empty', async () => {
+ element.migratedId = '';
+ await element.updateComplete;
+
+ assert.isTrue(element.hasAttribute('hidden'));
+ });
+
+ it('shows element when migratedId is set', async () => {
+ element.migratedId = '1234';
+ await element.updateComplete;
+
+ assert.isFalse(element.hasAttribute('hidden'));
+ });
+});
diff --git a/static_src/react/issue-wizard/IssueWizardDescriptionsUtils.tsx b/static_src/react/issue-wizard/IssueWizardDescriptionsUtils.tsx
index e32d2d5..1baf35b 100644
--- a/static_src/react/issue-wizard/IssueWizardDescriptionsUtils.tsx
+++ b/static_src/react/issue-wizard/IssueWizardDescriptionsUtils.tsx
@@ -21,6 +21,10 @@
let compVal = component || '';
let typeLabel = isRegression ? 'Type-Bug-Regression' : 'Type-Bug';
+ if (category === 'Security') {
+ typeLabel = 'Type-Bug-Security'
+ }
+
customQuestionsAnswers.forEach((ans) => {
if (ans.startsWith(LABELS_PREFIX)) {
const currentAnswer = ans.substring(LABELS_PREFIX.length);
@@ -42,9 +46,8 @@
}
break;
case 'Security':
- if (typeLabel === '') {
- typeLabel = 'Type-Bug-Security';
- }
+ typeLabel = 'Type-Bug-Security';
+ break;
case 'Other':
typeLabel = "Type-Bug";
const issueType = currentAnswer.split(' - ')[0];
diff --git a/static_src/reducers/issueV0.js b/static_src/reducers/issueV0.js
index 36c446d..880ebbc 100644
--- a/static_src/reducers/issueV0.js
+++ b/static_src/reducers/issueV0.js
@@ -493,6 +493,7 @@
const RESTRICT_VIEW_PREFIX = 'restrict-view-';
const RESTRICT_EDIT_PREFIX = 'restrict-editissue-';
const RESTRICT_COMMENT_PREFIX = 'restrict-addissuecomment-';
+const MIGRATED_ISSUE_PREFIX = 'migrated-to-b-';
/**
* Selector to retrieve all normalized Issue data in the Redux store,
@@ -703,6 +704,25 @@
},
);
+// Gets the Issue Tracker ID of a moved issue.
+export const migratedId = createSelector(
+ labelRefs,
+ (labelRefs) => {
+ if (!labelRefs) return '';
+
+ // Assume that there's only one migrated-to-b-* label. Or at least drop any
+ // labels besides the first one.
+ const migrationLabel = labelRefs.find((labelRef) => {
+ return labelRef.label.toLowerCase().startsWith(MIGRATED_ISSUE_PREFIX);
+ });
+
+ if (migrationLabel) {
+ return migrationLabel.label.substring(MIGRATED_ISSUE_PREFIX.length);
+ }
+ return '';
+ },
+);
+
export const isOpen = createSelector(
viewedIssue,
(issue) => issue && issue.statusRef && issue.statusRef.meansOpen || false);
diff --git a/static_src/reducers/issueV0.test.js b/static_src/reducers/issueV0.test.js
index 0c7a0f5..33b63c1 100644
--- a/static_src/reducers/issueV0.test.js
+++ b/static_src/reducers/issueV0.test.js
@@ -299,6 +299,33 @@
});
});
+ it('migratedId', () => {
+ assert.equal(issueV0.migratedId(wrapIssue()), '');
+ assert.equal(issueV0.migratedId(wrapIssue({labelRefs: []})), '');
+
+ assert.equal(issueV0.migratedId(wrapIssue({labelRefs: [
+ {label: 'IgnoreThis'},
+ {label: 'IgnoreThis2'},
+ ]})), '');
+
+ assert.equal(issueV0.migratedId(wrapIssue({labelRefs: [
+ {label: 'IgnoreThis'},
+ {label: 'IgnoreThis2'},
+ {label: 'migrated-to-b-6789'},
+ ]})), '6789');
+
+ assert.equal(issueV0.migratedId(wrapIssue({labelRefs: [
+ {label: 'migrated-to-b-1234'},
+ ]})), '1234');
+
+ // We assume there's only one migrated-to-b-* label.
+ assert.equal(issueV0.migratedId(wrapIssue({labelRefs: [
+ {label: 'migrated-to-b-1234'},
+ {label: 'migrated-to-b-6789'},
+ ]})), '1234');
+ });
+
+
it('isOpen', () => {
assert.isFalse(issueV0.isOpen(wrapIssue()));
assert.isTrue(issueV0.isOpen(wrapIssue({statusRef: {meansOpen: true}})));
diff --git a/templates/project/people-detail-perms-part.ezt b/templates/project/people-detail-perms-part.ezt
index 3a30417..fc29473 100644
--- a/templates/project/people-detail-perms-part.ezt
+++ b/templates/project/people-detail-perms-part.ezt
@@ -17,7 +17,6 @@
[include "people-detail-row-part.ezt" role_perms.DeleteAny member_perms.DeleteAny "DeleteAny" "Delete comments by anyone"]
[include "people-detail-row-part.ezt" role_perms.EditAnyMemberNotes member_perms.EditAnyMemberNotes "EditAnyMemberNotes" "Edit anyone's member notes"]
- [include "people-detail-row-part.ezt" role_perms.ModerateSpam member_perms.ModerateSpam "ModerateSpam" "Mark or un-mark issues and comments as spam"]
diff --git a/templates/sitewide/user-profile-page-polymer.ezt b/templates/sitewide/user-profile-page-polymer.ezt
deleted file mode 100644
index fe10704..0000000
--- a/templates/sitewide/user-profile-page-polymer.ezt
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<title>Monorail: Polymer Profile Page</title>
-
-[include "header-shared.ezt"]
-
-[include "../webpack-out/mr-profile-page.ezt"]
-
-<mr-profile-page
- viewedUserId="[viewed_user_id]"
- viewedUser="[viewed_user_display_name]" [if-any logged_in_user]
- user="[logged_in_user.email]"[end]
- loginUrl="[login_url]"
- logoutUrl="[logout_url]"
- lastVisitStr="[last_visit_str]"
- starredUsers="[starred_users_json]"
-></mr-profile-page>
-
-[include "../framework/polymer-footer.ezt"]
diff --git a/templates/tracker/spam-moderation-queue.ezt b/templates/tracker/spam-moderation-queue.ezt
deleted file mode 100644
index e43e477..0000000
--- a/templates/tracker/spam-moderation-queue.ezt
+++ /dev/null
@@ -1,121 +0,0 @@
-[define title]Spam Moderation Queue[end]
-[define category_css]css/ph_list.css[end]
-[define page_css]css/ph_detail.css[end][# needed for infopeek]
-
-[if-any projectname]
- [include "../framework/header.ezt" "showtabs"]
-[else]
- [include "../framework/header.ezt" "hidetabs"]
-[end]
-[include "../framework/js-placeholders.ezt" "showtabs"]
-
-<h2>Spam Moderation Queue: Automatic Classifier Close Calls</h2>
-[include "../framework/artifact-list-pagination-part.ezt"]
-
-<button type="submit" vaue="mark_spam" disabled="true">Mark as Spam</button>
-<button type="submit" value="mark_ham" disabled="true">Mark as Ham</button>
-
-<span style="margin:0 .7em">Select:
- <a id="selectall" href="#">All</a>
- <a id="selectnone" href="#">None</a>
-</span>
-
-<table id='resultstable'>
-<tr>
- <td>
- </td>
- <td>ID</td>
- <td>Author</td>
- <td>Summary</td>
- <td>Snippet</td>
- <td>Opened at</td>
- <td>Spam?</td>
- <td>Verdict reason</td>
- <td>Confidence</td>
- <td>Verdict at</td>
- <td>Flag count</td>
-</tr>
-[for issue_queue]
-<tr>
- <td><input type='checkbox' name='issue_local_id' value='[issue_queue.issue.local_id]'/></td>
- <td><a href='/p/[projectname]/issues/detail?id=[issue_queue.issue.local_id]'>[issue_queue.issue.local_id]</a></td>
- <td><a href='/u/[issue_queue.reporter.email]'>[issue_queue.reporter.email]</a></td>
- <td><a href='/p/[projectname]/issues/detail?id=[issue_queue.issue.local_id]'>[issue_queue.summary]</a></td>
- <td>
- [issue_queue.comment_text]
- </td>
- <td>[issue_queue.issue.opened_timestamp]</td>
- <td>[issue_queue.issue.is_spam]</td>
-
- <td>[issue_queue.reason]</td>
- <td>[issue_queue.classifier_confidence]</td>
- <td>[issue_queue.verdict_time]</td>
- <td>[issue_queue.flag_count]</td>
-</tr>
-[end]
-</table>
-
-[include "../framework/artifact-list-pagination-part.ezt"]
-<button type="submit" vaue="mark_spam" disabled="true">Mark as Spam</button>
-<button type="submit" value="mark_ham" disabled="true">Mark as Ham</button>
-
-</form>
-
-<script type="text/javascript" nonce="[nonce]">
-runOnLoad(function() {
- if ($("selectall")) {
- $("selectall").addEventListener("click", function() {
- _selectAllIssues();
- setDisabled(false);
- });
- }
- if ($("selectnone")) {
- $("selectnone").addEventListener("click", function() {
- _selectNoneIssues();
- setDisabled(true);
- });
- }
-
- const checkboxes = Array.from(
- document.querySelectorAll('input[type=checkbox]'));
- checkboxes.forEach(checkbox => {
- checkbox.addEventListener('change', updateEnabled);
- });
-
- const buttons = Array.from(
- document.querySelectorAll('button[type=submit]'));
- buttons.forEach(button => {
- button.addEventListener('click', function(event) {
- const markSpam = (button.value === 'mark_spam');
- const issueRefs = [];
- checkboxes.forEach(checkbox => {
- if (checkbox.checked) {
- issueRefs.push({
- projectName: window.CS_env.projectName,
- localId: checkbox.value,
- });
- const rowElement = checkbox.parentElement.parentElement;
- rowElement.parentElement.removeChild(rowElement);
- }
- });
- window.prpcClient.call('monorail.Issues', 'FlagIssues', {
- issueRefs: issueRefs,
- flag: markSpam,
- });
- });
- });
-
- function updateEnabled() {
- const anySelected = checkboxes.some(checkbox => checkbox.checked);
- setDisabled(!anySelected);
- }
-
- function setDisabled(disabled) {
- buttons.forEach(button => {
- button.disabled = disabled;
- });
- }
-});
-</script>
-
-[include "../framework/footer.ezt"]
diff --git a/third_party/README.md b/third_party/README.md
deleted file mode 100644
index 3c5a971..0000000
--- a/third_party/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Check the README.monorail file in each directory for package info and
-instructions on how to update our copied third_party/ packages to other versions.
-
-TODO(crbug.com/monorail/7800): replace all remaining symlinked modules with direct
-copies.
diff --git a/third_party/__init__.py b/third_party/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/third_party/__init__.py
+++ /dev/null
diff --git a/third_party/cloudstorage b/third_party/cloudstorage
deleted file mode 120000
index 2f7613d..0000000
--- a/third_party/cloudstorage
+++ /dev/null
@@ -1 +0,0 @@
-../../third_party/cloudstorage/python/src/cloudstorage
\ No newline at end of file
diff --git a/third_party/httpagentparser b/third_party/httpagentparser
deleted file mode 120000
index 768d339..0000000
--- a/third_party/httpagentparser
+++ /dev/null
@@ -1 +0,0 @@
-../../third_party/httpagentparser
\ No newline at end of file
diff --git a/third_party/httplib2 b/third_party/httplib2
deleted file mode 120000
index 15b666b..0000000
--- a/third_party/httplib2
+++ /dev/null
@@ -1 +0,0 @@
-../../third_party/httplib2/python2/httplib2
\ No newline at end of file
diff --git a/third_party/oauth2client b/third_party/oauth2client
deleted file mode 120000
index 3dbb7f9..0000000
--- a/third_party/oauth2client
+++ /dev/null
@@ -1 +0,0 @@
-../../third_party/oauth2client/oauth2client
\ No newline at end of file
diff --git a/tools/build_release.py b/tools/build_release.py
index c516ec8..02ffcf3 100755
--- a/tools/build_release.py
+++ b/tools/build_release.py
@@ -18,8 +18,8 @@
import json
import subprocess
import sys
-import urllib.error
-import urllib.request
+from six.moves.urllib import error
+from six.moves.urllib import request
INFRA_GIT = 'https://chromium.googlesource.com/infra/infra'
@@ -36,8 +36,8 @@
None if there's no such ref, a gitiles commit URL otherwise.
"""
try:
- resp = urllib.request.urlopen('%s/+/%s?format=JSON' % (INFRA_GIT, ref))
- except urllib.error.HTTPError as exc:
+ resp = request.urlopen('%s/+/%s?format=JSON' % (INFRA_GIT, ref))
+ except error.HTTPError as exc:
if exc.code == 404:
return None
raise
diff --git a/tools/ml/Makefile b/tools/ml/Makefile
deleted file mode 100644
index b0a8684..0000000
--- a/tools/ml/Makefile
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-# Use 'make help' for a list of commands.
-
-OUTPUT_DIR := /tmp/monospam-local-training/
-TIMESTAMP := $(shell date +%s)
-MODEL_DIR := /tmp/monospam-local-training/export/Servo/{TIMESTAMP}/
-SPAM_JOB_NAME := spam_trainer_$(TIMESTAMP)
-COMP_JOB_NAME := comp_trainer_$(TIMESTAMP)
-
-default: help
-
-help:
- @echo "Available commands:"
- @sed -n '/^[a-zA-Z0-9_.]*:/s/:.*//p' <Makefile
-
-train_local_spam:
- gcloud ai-platform local train \
- --package-path trainer/ \
- --module-name trainer.task \
- --job-dir $(OUTPUT_DIR) \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --train-file $(TRAIN_FILE) \
- --trainer-type spam
-
-train_local_spam_2:
- gcloud ai-platform local train \
- --package-path trainer2/ \
- --module-name trainer2.task \
- --job-dir $(OUTPUT_DIR) \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --train-file $(TRAIN_FILE) \
- --trainer-type spam
-
-predict_local_spam:
- ./spam.py local-predict
- gcloud ai-platform local predict \
- --model-dir $(MODEL_DIR) \
- --json-instances /tmp/instances.json
-
-train_from_prod_data_spam:
- gcloud ai-platform local train \
- --package-path trainer/ \
- --module-name trainer.task \
- --job-dir $(OUTPUT_DIR) \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix spam_training_data \
- --trainer-type spam
-
-train_from_prod_data_spam_2:
- gcloud ai-platform local train \
- --package-path trainer2/ \
- --module-name trainer2.task \
- --job-dir $(OUTPUT_DIR) \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix spam_training_data \
- --trainer-type spam
-
-submit_train_job_spam:
- @echo ${TIMESTAMP}
- gcloud ai-platform jobs submit training $(SPAM_JOB_NAME) \
- --package-path trainer/ \
- --module-name trainer.task \
- --runtime-version 1.2 \
- --job-dir gs://monorail-prod-mlengine/$(SPAM_JOB_NAME) \
- --region us-central1 \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix spam_training_data \
- --trainer-type spam
-
-submit_train_job_spam_2:
- @echo ${TIMESTAMP}
- gcloud ai-platform jobs submit training $(SPAM_JOB_NAME) \
- --package-path trainer2/ \
- --module-name trainer2.task \
- --runtime-version 2.1 \
- --python-version 3.7 \
- --job-dir gs://monorail-prod-mlengine/$(SPAM_JOB_NAME) \
- --region us-central1 \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix spam_training_data \
- --trainer-type spam
-
-# VERSION of format 'v_TIMESTAMP' should match TIMESTAMP in SPAM_JOB_NAME and MODEL_BINARIES.
-upload_model_prod_spam:
-ifndef MODEL_BINARIES
- $(error MODEL_BINARIES not set)
-endif
-ifndef VERSION
- $(error VERSION not set)
-endif
- gsutil ls -r gs://monorail-prod-mlengine/$(SPAM_JOB_NAME)
- gcloud ai-platform versions create $(VERSION) \
- --model spam_only_words \
- --origin $(MODEL_BINARIES) \
- --runtime-version 1.2
- gcloud ai-platform versions set-default $(VERSION) --model spam_only_words
-
-submit_pred_spam:
-ifndef SUMMARY_PATH
- $(error SUMMARY_PATH not set)
-endif
-ifndef CONTENT_PATH
- $(error CONTENT_PATH not set)
-endif
- ./spam.py predict --summary $(SUMMARY_PATH) --content $(CONTENT_PATH)
-
-
-train_from_prod_data_component:
- gcloud ai-platform local train \
- --package-path trainer/ \
- --module-name trainer.task \
- --job-dir $(OUTPUT_DIR) \
- -- \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix component_training_data \
- --trainer-type component
-
-submit_train_job_component:
- gcloud init
- gcloud ai-platform jobs submit training $(COMP_JOB_NAME) \
- --package-path trainer/ \
- --module-name trainer.task \
- --runtime-version 1.2 \
- --job-dir gs://monorail-prod-mlengine/$(COMP_JOB_NAME) \
- --region us-central1 \
- --scale-tier custom \
- --config config.json \
- -- \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix component_training_data \
- --trainer-type component
-
-submit_train_job_component_2:
- gcloud ai-platform jobs submit training $(COMP_JOB_NAME) \
- --package-path trainer2/ \
- --module-name trainer2.task \
- --runtime-version 2.1 \
- --python-version 3.7 \
- --job-dir gs://monorail-prod-mlengine/$(COMP_JOB_NAME) \
- --region us-central1 \
- --scale-tier custom \
- --master-machine-type n1-highmem-8 \
- -- \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix component_training_data \
- --trainer-type component
-
-# VERSION of format 'v_TIMESTAMP' should match TIMESTAMP in COMP_JOB_NAME and MODEL_BINARIES.
-upload_model_prod_component:
-ifndef MODEL_BINARIES
- $(error MODEL_BINARIES not set)
-endif
-ifndef VERSION
- $(error VERSION not set)
-endif
- gsutil ls -r gs://monorail-prod-mlengine/$(COMP_JOB_NAME)
- gcloud ai-platform versions create $(VERSION) \
- --model component_top_words \
- --origin $(MODEL_BINARIES) \
- --runtime-version 1.2
- gcloud ai-platform versions set-default $(VERSION) --model component_top_words
-
-submit_pred_component:
-ifndef CONTENT_PATH
- $(error CONTENT_PATH not set)
-endif
- ./component.py --project monorail-prod --content $(CONTENT_PATH)
-
-
-### Local Training in TF 2.0
-
-tf2_train_local_spam:
-ifndef TRAIN_FILE
- $(error TRAIN_FILE not set)
-endif
- python3 ./trainer2/task.py \
- --train-file $(TRAIN_FILE) \
- --job-dir $(OUTPUT_DIR) \
- --train-steps 1000 \
- --verbosity DEBUG \
- --trainer-type spam
-
-tf2_train_local_component:
-ifndef TRAIN_FILE
- $(error TRAIN_FILE not set)
-endif
- python3 ./trainer2/task.py \
- --train-file $(TRAIN_FILE) \
- --job-dir $(OUTPUT_DIR) \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --trainer-type component
diff --git a/tools/ml/README.md b/tools/ml/README.md
deleted file mode 100644
index 01b0702..0000000
--- a/tools/ml/README.md
+++ /dev/null
@@ -1,222 +0,0 @@
-# Monorail Machine Learning Classifiers
-
-Monorail has two machine learning classifiers running in ML Engine: a spam classifier and a component predictor.
-
-Whenever a user creates a new issue (or comments on an issue without an assigned component), components are suggested based on the text the user types using Monorail's component predictor.
-
-Monorail also runs each new issue and comment through a spam classifier model.
-
-In order to train a new model locally or in the cloud, follow the instructions below.
-
-> Note: you must be logged into the correct GCP project with `gcloud` in order to run the below commands.
-
-### New model in trainer2/
-
-The new code is used for local training and exporting model using Python3 and TensorFlow 2.0. Future predictor should also be migrated to use the training files in trainer2/.
-
-### Trainer
-
-Both trainers are Python modules that do the following:
-
-1. Download all (spam or component) exported training data from GCS
-2. Define a TensorFlow Estimator and Experiment
-
-ML Engine uses the high-level [`learn_runner`](https://www.tensorflow.org/api_docs/python/tf/contrib/learn/learn_runner/run) API (see [`trainer/task.py`](trainer/task.py)) which allows it to train, evaluate, and predict against a model saved in GCS.
-
-## Monorail Spam Classifier
-
-### Run locally
-
-To run any training jobs locally, you'll need Python 2 and TensorFlow 1.2:
-
-```sh
-pip install -r requirements.txt
-```
-
-Run a local training job with placeholder data:
-
-```sh
-make TRAIN_FILE=./sample_spam_training_data.csv train_local_spam
-```
-
-To have the local trainer download and train on the real training data, you'll
-need to be logged into `gcloud` and have access to the `monorail-prod` project.
-
-```sh
-make train_from_prod_data_spam
-```
-
-<!-- TODO: the below has not been reviewed recently. -->
-
-### Submit a local prediction
-
-```sh
-./spam.py local-predict
-gcloud ml-engine local predict --model-dir $OUTPUT_DIR/export/Servo/{TIMESTAMP}/ --json-instances /tmp/instances.json
-```
-
-### Submitting a training job to ML Engine
-
-This will run a job and output a trained model to GCS. Job names must be unique.
-
-First verify you're in the `monorail-prod` GCP project.
-
-```sh
-gcloud init
-```
-
-To submit a training job manually, run:
-
-```sh
-TIMESTAMP=$(date +%s)
-JOB_NAME=spam_trainer_$TIMESTAMP
-gcloud ml-engine jobs submit training $JOB_NAME \
- --package-path trainer/ \
- --module-name trainer.task \
- --runtime-version 1.2 \
- --job-dir gs://monorail-prod-mlengine/$JOB_NAME \
- --region us-central1 \
- -- \
- --train-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix spam_training_data \
- --trainer-type spam
-```
-
-### Uploading a model and and promoting it to production
-
-To upload a model you'll need to locate the exported model directory in GCS. To do that, run:
-
-```sh
-gsutil ls -r gs://monorail-prod-mlengine/$JOB_NAME
-
-# Look for a directory that matches the below structure and assign it.
-# It should have the structure $GCS_OUTPUT_LOCATION/export/Servo/$TIMESTAMP/.
-MODEL_BINARIES=gs://monorail-prod-mlengine/spam_trainer_1507059720/export/Servo/1507060043/
-
-VERSION=v_$TIMESTAMP
-gcloud ml-engine versions create $VERSION \
- --model spam_only_words \
- --origin $MODEL_BINARIES \
- --runtime-version 1.2
-```
-
-To promote to production, set that model as default.
-
-```sh
-gcloud ml-engine versions set-default $VERSION --model spam_only_words
-```
-
-### Submit a prediction
-
-Use the script [`spam.py`](spam.py) to make predictions
-from the command line. Files containing text for classification must be provided as summary and content arguments.
-
-```sh
-$ ./spam.py predict --summary summary.txt --content content.txt
-{u'predictions': [{u'classes': [u'0', u'1'], u'scores': [0.4986788034439087, 0.5013211965560913]}]}
-```
-
-A higher probability for class 1 indicates that the text was classified as spam.
-
-### Compare model accuracy
-
-After submitting a job to ML Engine, you can compare the accuracy of two submitted jobs using their trainer names.
-
-```sh
-$ ./spam.py --project monorail-prod compare-accuracy --model1 spam_trainer_1521756634 --model2 spam_trainer_1516759200
-spam_trainer_1521756634:
-AUC: 0.996436 AUC Precision/Recall: 0.997456
-
-spam_trainer_1516759200:
-AUC: 0.982159 AUC Precision/Recall: 0.985069
-```
-
-By default, model1 is the default model running in the specified project. Note that an error will be thrown if the trainer does not contain an eval_data.json file.
-
-## Monorail Component Predictor
-
-### Run locally
-
-To kick off a local training job, run:
-
-```sh
-OUTPUT_DIR=/tmp/monospam-local-training
-rm -rf $OUTPUT_DIR
-gcloud ml-engine local train \
- --package-path trainer/ \
- --module-name trainer.task \
- --job-dir $OUTPUT_DIR \
- -- \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix component_training_data \
- --trainer-type component
-```
-
-### Submitting a training job to ML Engine
-
-This will run a job and output a trained model to GCS. Job names must be unique.
-
-First verify you're in the `monorail-prod` GCP project.
-
-```sh
-gcloud init
-```
-
-To submit a training job manually, run:
-
-```sh
-TIMESTAMP=$(date +%s)
-JOB_NAME=component_trainer_$TIMESTAMP
-gcloud ml-engine jobs submit training $JOB_NAME \
- --package-path trainer/ \
- --module-name trainer.task \
- --runtime-version 1.2 \
- --job-dir gs://monorail-prod-mlengine/$JOB_NAME \
- --region us-central1 \
- --scale-tier custom \
- --config config.json \
- -- \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --gcs-bucket monorail-prod.appspot.com \
- --gcs-prefix component_training_data \
- --trainer-type component
-```
-
-### Uploading a model and and promoting it to production
-
-To upload a model you'll need to locate the exported model directory in GCS. To do that, run:
-
-```sh
-gsutil ls -r gs://monorail-prod-mlengine/$JOB_NAME
-
-# Look for a directory that matches the below structure and assign it.
-# It should have the structure $GCS_OUTPUT_LOCATION/export/Servo/$TIMESTAMP/.
-MODEL_BINARIES=gs://monorail-prod-mlengine/component_trainer_1507059720/export/Servo/1507060043/
-
-VERSION=v_$TIMESTAMP
-gcloud ml-engine versions create $VERSION \
- --model component_top_words \
- --origin $MODEL_BINARIES \
- --runtime-version 1.2
-```
-To promote to production, set that model as default.
-
-```sh
-gcloud ml-engine versions set-default $VERSION --model component_top_words
-```
-
-### Submit a prediction
-
-Use the script [`component.py`](component.py) to make predictions from the command line. A file containing text for classification must be provided as the content argument.
-
-```sh
-$ ./component.py --project monorail-prod --content content.txt
-Most likely component: index 108, component id 36250211
-```
diff --git a/tools/ml/comment-training-export.sql b/tools/ml/comment-training-export.sql
deleted file mode 100644
index 891ed18..0000000
--- a/tools/ml/comment-training-export.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-select
- IF(v.is_spam, "spam", "ham"),
- "",
- REPLACE(cc.content, '\n', '\r'),
- u.email,
- CONCAT("https://bugs.chromium.org/p/", p.project_name, "/issues/detail?id=", i.local_id),
- r.email
-from SpamVerdict v
- join Comment c on c.id = v.comment_id
- join CommentContent cc on cc.comment_id = c.id
- join Project p on p.project_id = c.project_id
- join Issue i on i.id=c.issue_id
- join User u on u.user_id = c.commenter_id
- join User r on r.user_id = v.user_id
-where
- v.reason='manual' and v.overruled = 0;
diff --git a/tools/ml/component.py b/tools/ml/component.py
deleted file mode 100755
index 9b401f3..0000000
--- a/tools/ml/component.py
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-"""
-Component classifier command line tools.
-
-Use this command to submit predictions to the model running
-in production.
-
-Note that in order for this command to work, you must be logged into
-gcloud in the project under which you wish to run commands.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import argparse
-import json
-import os
-import re
-import sys
-
-import googleapiclient
-from googleapiclient import discovery
-from googleapiclient import errors
-from google.cloud.storage import client, bucket, blob
-from apiclient.discovery import build
-from oauth2client.client import GoogleCredentials
-
-import ml_helpers
-
-credentials = GoogleCredentials.get_application_default()
-
-# This must be identical with settings.component_features.
-COMPONENT_FEATURES = 5000
-
-MODEL_NAME = 'component_top_words'
-
-
-def Predict(args):
- ml = googleapiclient.discovery.build('ml', 'v1', credentials=credentials)
-
- with open(args.content) as f:
- content = f.read()
-
- project_ID = 'projects/%s' % args.project
- full_model_name = '%s/models/%s' % (project_ID, MODEL_NAME)
- model_request = ml.projects().models().get(name=full_model_name)
- model_response = model_request.execute()
-
- version_name = model_response['defaultVersion']['name']
-
- model_name = 'component_trainer_' + re.search("v_(\d+)",
- version_name).group(1)
-
- client_obj = client.Client(project=args.project)
- bucket_name = '%s-mlengine' % args.project
- bucket_obj = bucket.Bucket(client_obj, bucket_name)
-
- instance = ml_helpers.GenerateFeaturesRaw([content],
- COMPONENT_FEATURES,
- getTopWords(bucket_name,
- model_name))
-
-
- request = ml.projects().predict(name=full_model_name, body={
- 'instances': [{'inputs': instance['word_features']}]
- })
-
- try:
- response = request.execute()
-
-
- bucket_obj.blob = blob.Blob('%s/component_index.json'
- % model_name, bucket_obj)
- component_index = bucket_obj.blob.download_as_string()
- component_index_dict = json.loads(component_index)
-
- return read_indexes(response, component_index_dict)
-
- except googleapiclient.errors.HttpError, err:
- print('There was an error. Check the details:')
- print(err._get_reason())
-
-
-def getTopWords(bucket_name, model_name):
- storage = discovery.build('storage', 'v1', credentials=credentials)
- objects = storage.objects()
-
- request = objects.get_media(bucket=bucket_name,
- object=model_name + '/topwords.txt')
- response = request.execute()
-
- top_list = response.split()
- top_words = {}
- for i in range(len(top_list)):
- top_words[top_list[i]] = i
-
- return top_words
-
-
-def read_indexes(response, component_index):
-
- scores = response['predictions'][0]['scores']
- highest = scores.index(max(scores))
-
- component_id = component_index[str(highest)]
-
- return "Most likely component: index %d, component id %d" % (
- int(highest), int(component_id))
-
-
-def main():
- if not credentials and 'GOOGLE_APPLICATION_CREDENTIALS' not in os.environ:
- print(('GOOGLE_APPLICATION_CREDENTIALS environment variable is not set. '
- 'Exiting.'))
- sys.exit(1)
-
- parser = argparse.ArgumentParser(
- description='Component classifier utilities.')
- parser.add_argument('--project', '-p', default='monorail-staging')
-
- parser.add_argument('--content', '-c', required=True,
- help='A file containing the content.')
-
- args = parser.parse_args()
-
- res = Predict(args)
-
- print(res)
-
-
-if __name__ == '__main__':
- main()
diff --git a/tools/ml/config.json b/tools/ml/config.json
deleted file mode 100644
index 6c36e3e..0000000
--- a/tools/ml/config.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "trainingInput": {
- "masterType": "large_model"
- }
-}
diff --git a/tools/ml/issue-training-export.sql b/tools/ml/issue-training-export.sql
deleted file mode 100644
index 73a637b..0000000
--- a/tools/ml/issue-training-export.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-select
- IF(v.is_spam, "spam", "ham"),
- REPLACE(s.summary, '\n', '\r'),
- REPLACE(cc.content, '\n', '\r'),
- u.email,
- CONCAT("https://bugs.chromium.org/p/", p.project_name, "/issues/detail?id=", i.local_id),
- r.email
-from SpamVerdict v
- join Issue i on i.id = v.issue_id
- join Comment c on c.issue_id = i.id
- join CommentContent cc on cc.comment_id = c.id
- join IssueSummary s on s.issue_id = i.id
- join Project p on p.project_id = i.project_id
- join User u on u.user_id = c.commenter_id
- join User r on r.user_id = v.user_id
-where
- v.reason='manual' and v.overruled = 0;
diff --git a/tools/ml/ml_helpers.py b/tools/ml/ml_helpers.py
deleted file mode 120000
index 894569b..0000000
--- a/tools/ml/ml_helpers.py
+++ /dev/null
@@ -1 +0,0 @@
-../../services/ml_helpers.py
\ No newline at end of file
diff --git a/tools/ml/requirements.txt b/tools/ml/requirements.txt
deleted file mode 100644
index e0a7166..0000000
--- a/tools/ml/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-tensorflow==1.2
diff --git a/tools/ml/sample_spam_training_data.csv b/tools/ml/sample_spam_training_data.csv
deleted file mode 100644
index 4de2805..0000000
--- a/tools/ml/sample_spam_training_data.csv
+++ /dev/null
@@ -1,36 +0,0 @@
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"ham","","# 1231
- - sdfsdf","ddoman@google.com"
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"ham","","# 1231
- - sdfsdf","ddoman@google.com"
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"ham","","# 1231
- - sdfsdf","ddoman@google.com"
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"ham","","# 1231
- - sdfsdf","ddoman@google.com"
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"ham","","# 1231
- - sdfsdf","ddoman@google.com"
-"ham","","Okay. I think we've found another way to do what we need - thanks, though!","wscalf@gmail.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"spam","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"spam","test","hmmm","zhangtiff@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
-"ham","Chicken","<b>Feature description:</b> <b>--</b> test <b>PRD:</b>ewre <b>Mocks:</b> <b>Design doc:</b> <b>Test Plan:</b> <b>Metrics (go/CrOSlaunchMetrics):</b> ","jojwang@google.com"
diff --git a/tools/ml/setup.py b/tools/ml/setup.py
deleted file mode 100644
index 728cd55..0000000
--- a/tools/ml/setup.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-from setuptools import find_packages
-from setuptools import setup
-
-REQUIRED_PACKAGES = ['google-cloud-storage']
-
-setup(
- name='trainer',
- version='0.1',
- install_requires=REQUIRED_PACKAGES,
- packages=find_packages(),
- include_package_data=True,
- description="""Trainer application package for training a spam classification
- model in ML Engine and storing the saved model and accuracy
- results in GCS."""
-)
diff --git a/tools/ml/spam.py b/tools/ml/spam.py
deleted file mode 100755
index afc9d4d..0000000
--- a/tools/ml/spam.py
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-"""
-Spam classifier command line tools.
-
-Use this command to submit predictions locally or to the model running
-in production. See tools/spam/README.md for more context on training
-and model operations.
-
-Note that in order for this command to work, you must be logged into
-gcloud in the project under which you wish to run commands.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import argparse
-import json
-import os
-import re
-import sys
-import googleapiclient
-
-from google.cloud.storage import client, bucket, blob
-import ml_helpers
-from apiclient.discovery import build
-from oauth2client.client import GoogleCredentials
-
-credentials = GoogleCredentials.get_application_default()
-
-# This must be identical with settings.spam_feature_hashes.
-SPAM_FEATURE_HASHES = 500
-
-MODEL_NAME = 'spam_only_words'
-
-
-def Predict(args):
- ml = googleapiclient.discovery.build('ml', 'v1', credentials=credentials)
-
- with open(args.summary) as f:
- summary = f.read()
- with open(args.content) as f:
- content = f.read()
-
- instance = ml_helpers.GenerateFeaturesRaw([summary, content],
- SPAM_FEATURE_HASHES)
-
- project_ID = 'projects/%s' % args.project
- full_model_name = '%s/models/%s' % (project_ID, MODEL_NAME)
- request = ml.projects().predict(name=full_model_name, body={
- 'instances': [{'inputs': instance['word_hashes']}]
- })
-
- try:
- response = request.execute()
- print(response)
- except googleapiclient.errors.HttpError, err:
- print('There was an error. Check the details:')
- print(err._get_reason())
-
-
-def LocalPredict(_):
- print('This will write /tmp/instances.json.')
- print('Then you can call:')
- print(('gcloud ml-engine local predict --json-instances /tmp/instances.json'
- ' --model-dir {model_dir}'))
-
- summary = raw_input('Summary: ')
- description = raw_input('Description: ')
- instance = ml_helpers.GenerateFeaturesRaw([summary, description],
- SPAM_FEATURE_HASHES)
-
- with open('/tmp/instances.json', 'w') as f:
- json.dump({'inputs': instance['word_hashes']}, f)
-
-
-def get_auc(model_name, bucket_obj):
- bucket_obj.blob = blob.Blob('%s/eval_data.json' % model_name, bucket_obj)
- data = bucket_obj.blob.download_as_string()
- data_dict = json.loads(data)
- return data_dict['auc'], data_dict['auc_precision_recall']
-
-
-def CompareAccuracy(args):
- client_obj = client.Client(project=args.project)
- bucket_name = '%s-mlengine' % args.project
- bucket_obj = bucket.Bucket(client_obj, bucket_name)
-
- model1_auc, model1_auc_pr = get_auc(args.model1, bucket_obj)
- print('%s:\nAUC: %f\tAUC Precision/Recall: %f\n'
- % (args.model1, model1_auc, model1_auc_pr))
-
- model2_auc, model2_auc_pr = get_auc(args.model2, bucket_obj)
- print('%s:\nAUC: %f\tAUC Precision/Recall: %f'
- % (args.model2, model2_auc, model2_auc_pr))
-
-
-def main():
- if not credentials and 'GOOGLE_APPLICATION_CREDENTIALS' not in os.environ:
- print(('GOOGLE_APPLICATION_CREDENTIALS environment variable is not set. '
- 'Exiting.'))
- sys.exit(1)
-
- parser = argparse.ArgumentParser(description='Spam classifier utilities.')
- parser.add_argument('--project', '-p', default='monorail-staging')
-
- project = parser.parse_known_args()
- subparsers = parser.add_subparsers(dest='command')
-
- predict = subparsers.add_parser('predict',
- help='Submit a prediction to the default model in ML Engine.')
- predict.add_argument('--summary', help='A file containing the summary.')
- predict.add_argument('--content', help='A file containing the content.')
-
- subparsers.add_parser('local-predict',
- help='Create an instance on the local filesystem to use in prediction.')
-
- ml = googleapiclient.discovery.build('ml', 'v1', credentials=credentials)
-
- request = ml.projects().models().get(name='projects/%s/models/%s'
- % (project[0].project, MODEL_NAME))
- response = request.execute()
-
- default_version = re.search(
- '.*(spam_trainer_\d+).*',
- response['defaultVersion']['deploymentUri']).group(1)
-
- compare = subparsers.add_parser('compare-accuracy',
- help='Compare the accuracy of two models.')
-
- compare.add_argument('--model1',
- default=default_version,
- help='The first model to find the auc values of.')
-
- # TODO(carapew): Make second default the most recently deployed model
- compare.add_argument('--model2',
- default='spam_trainer_1513384515'
- if project[0].project == 'monorail-staging' else
- 'spam_trainer_1522141200',
- help='The second model to find the auc values of.')
-
- args = parser.parse_args()
-
- cmds = {
- 'predict': Predict,
- 'local-predict': LocalPredict,
- 'compare-accuracy': CompareAccuracy,
- }
- res = cmds[args.command](args)
-
- print(json.dumps(res, indent=2))
-
-
-if __name__ == '__main__':
- main()
diff --git a/tools/ml/trainer/__init__.py b/tools/ml/trainer/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tools/ml/trainer/__init__.py
+++ /dev/null
diff --git a/tools/ml/trainer/dataset.py b/tools/ml/trainer/dataset.py
deleted file mode 100644
index 0def4b6..0000000
--- a/tools/ml/trainer/dataset.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import StringIO
-import tensorflow as tf
-
-import csv
-import sys
-from googleapiclient import discovery
-from googleapiclient import errors
-from oauth2client.client import GoogleCredentials
-
-import trainer.ml_helpers
-
-
-def fetch_training_data(bucket, prefix, trainer_type):
-
- credentials = GoogleCredentials.get_application_default()
- storage = discovery.build('storage', 'v1', credentials=credentials)
- objects = storage.objects()
-
- request = objects.list(bucket=bucket, prefix=prefix)
- response = make_api_request(request)
- items = response.get('items')
- csv_filepaths = [blob.get('name') for blob in items]
-
- if trainer_type == 'spam':
- return fetch_spam(csv_filepaths, bucket, objects)
- else:
- return fetch_component(csv_filepaths, bucket, objects)
-
-
-def fetch_spam(csv_filepaths, bucket, objects):
-
- training_data = []
- # Add code
- csv_filepaths = [
- 'spam-training-data/full-android.csv',
- 'spam-training-data/full-support.csv',
- ] + csv_filepaths
-
- for filepath in csv_filepaths:
- media = fetch_training_csv(filepath, objects, bucket)
- rows, skipped_rows = trainer.ml_helpers.spam_from_file(
- StringIO.StringIO(media))
-
- if len(rows):
- training_data.extend(rows)
-
- tf.logging.info('{:<40}{:<20}{:<20}'.format(
- filepath,
- 'added %d rows' % len(rows),
- 'skipped %d rows' % skipped_rows))
-
- return training_data
-
-
-def fetch_component(csv_filepaths, bucket, objects):
-
- training_data = []
- for filepath in csv_filepaths:
- media = fetch_training_csv(filepath, objects, bucket)
- rows = trainer.ml_helpers.component_from_file(
- StringIO.StringIO(media))
-
- if len(rows):
- training_data.extend(rows)
-
- tf.logging.info('{:<40}{:<20}'.format(
- filepath,
- 'added %d rows' % len(rows)))
-
- return training_data
-
-
-def fetch_training_csv(filepath, objects, bucket):
- request = objects.get_media(bucket=bucket, object=filepath)
- return make_api_request(request)
-
-
-def make_api_request(request):
- try:
- return request.execute()
- except errors.HttpError, err:
- tf.logging.error('There was an error with the API. Details:')
- tf.logging.error(err._get_reason())
- raise
-
-
diff --git a/tools/ml/trainer/ml_helpers.py b/tools/ml/trainer/ml_helpers.py
deleted file mode 120000
index c790a2c..0000000
--- a/tools/ml/trainer/ml_helpers.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../services/ml_helpers.py
\ No newline at end of file
diff --git a/tools/ml/trainer/model.py b/tools/ml/trainer/model.py
deleted file mode 100644
index 3b627a9..0000000
--- a/tools/ml/trainer/model.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import numpy as np
-import tensorflow as tf
-
-from trainer.ml_helpers import COMPONENT_FEATURES
-from trainer.ml_helpers import SPAM_FEATURE_HASHES
-
-# Important: we assume this list mirrors the output of GenerateFeaturesRaw.
-INPUT_COLUMNS = {'component': [
- tf.feature_column.numeric_column(
- key='word_features',
- shape=(COMPONENT_FEATURES,)),
- ],
- 'spam': [
- tf.feature_column.numeric_column(
- key='word_hashes',
- shape=(SPAM_FEATURE_HASHES,)),
- ]}
-
-
-def build_estimator(config, trainer_type, class_count):
- """Returns a tf.Estimator.
-
- Args:
- config: tf.contrib.learn.RunConfig defining the runtime environment for the
- estimator (including model_dir).
- Returns:
- A LinearClassifier
- """
- return tf.contrib.learn.DNNClassifier(
- config=config,
- feature_columns=(INPUT_COLUMNS[trainer_type]),
- hidden_units=[1024, 512, 256],
- optimizer=tf.train.AdamOptimizer(learning_rate=0.001,
- beta1=0.9,
- beta2=0.999,
- epsilon=1e-08,
- use_locking=False,
- name='Adam'),
- n_classes=class_count
- )
-
-
-def feature_list_to_dict(X, trainer_type):
- """Converts an array of feature dicts into to one dict of
- {feature_name: [feature_values]}.
-
- Important: this assumes the ordering of X and INPUT_COLUMNS is the same.
-
- Args:
- X: an array of feature dicts
- Returns:
- A dictionary where each key is a feature name its value is a numpy array of
- shape (len(X),).
- """
- feature_dict = {}
-
- for feature_column in INPUT_COLUMNS[trainer_type]:
- feature_dict[feature_column.name] = []
-
- for instance in X:
- for key in instance.keys():
- feature_dict[key].append(instance[key])
-
- for key in [f.name for f in INPUT_COLUMNS[trainer_type]]:
- feature_dict[key] = np.array(feature_dict[key])
-
- return feature_dict
-
-
-def generate_json_serving_input_fn(trainer_type):
- def json_serving_input_fn():
- """Build the serving inputs.
-
- Returns:
- An InputFnOps containing features with placeholders.
- """
- features_placeholders = {}
- for column in INPUT_COLUMNS[trainer_type]:
- name = '%s_placeholder' % column.name
-
- # Special case non-scalar features.
- if column.shape[0] > 1:
- shape = [None, column.shape[0]]
- else:
- shape = [None]
-
- placeholder = tf.placeholder(tf.float32, shape, name=name)
- features_placeholders[column.name] = placeholder
-
- labels = None # Unknown at serving time
- return tf.contrib.learn.InputFnOps(features_placeholders, labels,
- features_placeholders)
-
- return json_serving_input_fn
-
-
-SERVING_FUNCTIONS = {
- 'JSON-component': generate_json_serving_input_fn('component'),
- 'JSON-spam': generate_json_serving_input_fn('spam')
-}
diff --git a/tools/ml/trainer/task.py b/tools/ml/trainer/task.py
deleted file mode 100644
index 7416c68..0000000
--- a/tools/ml/trainer/task.py
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import argparse
-import json
-import os
-import re
-
-import numpy as np
-import tensorflow as tf
-from googleapiclient import discovery
-from googleapiclient import errors
-from oauth2client.client import GoogleCredentials
-from sklearn.model_selection import train_test_split
-from tensorflow.contrib.learn.python.learn import learn_runner
-from tensorflow.contrib.learn.python.learn.estimators import run_config
-from tensorflow.contrib.learn.python.learn.utils import saved_model_export_utils
-from tensorflow.contrib.training.python.training import hparam
-
-from google.cloud.storage import blob, bucket, client
-
-import trainer.dataset
-import trainer.model
-import trainer.ml_helpers
-import trainer.top_words
-
-def generate_experiment_fn(**experiment_args):
- """Create an experiment function.
-
- Args:
- experiment_args: keyword arguments to be passed through to experiment
- See `tf.contrib.learn.Experiment` for full args.
- Returns:
- A function:
- (tf.contrib.learn.RunConfig, tf.contrib.training.HParams) -> Experiment
-
- This function is used by learn_runner to create an Experiment which
- executes model code provided in the form of an Estimator and
- input functions.
- """
- def _experiment_fn(config, hparams):
- index_to_component = {}
-
- if hparams.train_file:
- with open(hparams.train_file) as f:
- if hparams.trainer_type == 'spam':
- training_data = trainer.ml_helpers.spam_from_file(f)
- else:
- training_data = trainer.ml_helpers.component_from_file(f)
- else:
- training_data = trainer.dataset.fetch_training_data(hparams.gcs_bucket,
- hparams.gcs_prefix, hparams.trainer_type)
-
- tf.logging.info('Training data received. Len: %d' % len(training_data))
-
- if hparams.trainer_type == 'spam':
- X, y = trainer.ml_helpers.transform_spam_csv_to_features(
- training_data)
- else:
- top_list = trainer.top_words.make_top_words_list(hparams.job_dir)
- X, y, index_to_component = trainer.ml_helpers \
- .transform_component_csv_to_features(training_data, top_list)
-
- tf.logging.info('Features generated')
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
- random_state=42)
-
- train_input_fn = tf.estimator.inputs.numpy_input_fn(
- x=trainer.model.feature_list_to_dict(X_train, hparams.trainer_type),
- y=np.array(y_train),
- num_epochs=hparams.num_epochs,
- batch_size=hparams.train_batch_size,
- shuffle=True
- )
- eval_input_fn = tf.estimator.inputs.numpy_input_fn(
- x=trainer.model.feature_list_to_dict(X_test, hparams.trainer_type),
- y=np.array(y_test),
- num_epochs=None,
- batch_size=hparams.eval_batch_size,
- shuffle=False # Don't shuffle evaluation data
- )
-
- tf.logging.info('Numpy fns created')
- if hparams.trainer_type == 'component':
- store_component_conversion(hparams.job_dir, index_to_component)
-
- return tf.contrib.learn.Experiment(
- trainer.model.build_estimator(config=config,
- trainer_type=hparams.trainer_type,
- class_count=len(set(y))),
- train_input_fn=train_input_fn,
- eval_input_fn=eval_input_fn,
- **experiment_args
- )
- return _experiment_fn
-
-
-def store_component_conversion(job_dir, data):
-
- tf.logging.info('job_dir: %s' % job_dir)
- job_info = re.search('gs://(monorail-.+)-mlengine/(component_trainer_\d+)',
- job_dir)
-
- # Check if training is being done on GAE or locally.
- if job_info:
- project = job_info.group(1)
- job_name = job_info.group(2)
-
- client_obj = client.Client(project=project)
- bucket_name = '%s-mlengine' % project
- bucket_obj = bucket.Bucket(client_obj, bucket_name)
-
- bucket_obj.blob = blob.Blob(job_name + '/component_index.json', bucket_obj)
-
- bucket_obj.blob.upload_from_string(json.dumps(data),
- content_type='application/json')
-
- else:
- paths = job_dir.split('/')
- for y, _ in enumerate(list(range(1, len(paths))), 1):
- if not os.path.exists("/".join(paths[:y+1])):
- os.makedirs('/'.join(paths[:y+1]))
- with open(job_dir + '/component_index.json', 'w') as f:
- f.write(json.dumps(data))
-
-
-def store_eval(job_dir, results):
-
- tf.logging.info('job_dir: %s' % job_dir)
- job_info = re.search('gs://(monorail-.+)-mlengine/(spam_trainer_\d+)',
- job_dir)
-
- # Only upload eval data if this is not being run locally.
- if job_info:
- project = job_info.group(1)
- job_name = job_info.group(2)
-
- tf.logging.info('project: %s' % project)
- tf.logging.info('job_name: %s' % job_name)
-
- client_obj = client.Client(project=project)
- bucket_name = '%s-mlengine' % project
- bucket_obj = bucket.Bucket(client_obj, bucket_name)
-
- bucket_obj.blob = blob.Blob(job_name + '/eval_data.json', bucket_obj)
- for key, value in results[0].items():
- if isinstance(value, np.float32):
- results[0][key] = value.item()
-
- bucket_obj.blob.upload_from_string(json.dumps(results[0]),
- content_type='application/json')
-
- else:
- tf.logging.error('Could not find bucket "%s" to output evalution to.'
- % job_dir)
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- # Input Arguments
- parser.add_argument(
- '--train-file',
- help='GCS or local path to training data',
- )
- parser.add_argument(
- '--gcs-bucket',
- help='GCS bucket for training data.',
- )
- parser.add_argument(
- '--gcs-prefix',
- help='Training data path prefix inside GCS bucket.',
- )
- parser.add_argument(
- '--num-epochs',
- help="""\
- Maximum number of training data epochs on which to train.
- If both --max-steps and --num-epochs are specified,
- the training job will run for --max-steps or --num-epochs,
- whichever occurs first. If unspecified will run for --max-steps.\
- """,
- type=int,
- )
- parser.add_argument(
- '--train-batch-size',
- help='Batch size for training steps',
- type=int,
- default=128
- )
- parser.add_argument(
- '--eval-batch-size',
- help='Batch size for evaluation steps',
- type=int,
- default=128
- )
-
- # Training arguments
- parser.add_argument(
- '--job-dir',
- help='GCS location to write checkpoints and export models',
- required=True
- )
-
- # Logging arguments
- parser.add_argument(
- '--verbosity',
- choices=[
- 'DEBUG',
- 'ERROR',
- 'FATAL',
- 'INFO',
- 'WARN'
- ],
- default='INFO',
- )
-
- # Experiment arguments
- parser.add_argument(
- '--eval-delay-secs',
- help='How long to wait before running first evaluation',
- default=10,
- type=int
- )
- parser.add_argument(
- '--min-eval-frequency',
- help='Minimum number of training steps between evaluations',
- default=None, # Use TensorFlow's default (currently, 1000)
- type=int
- )
- parser.add_argument(
- '--train-steps',
- help="""\
- Steps to run the training job for. If --num-epochs is not specified,
- this must be. Otherwise the training job will run indefinitely.\
- """,
- type=int
- )
- parser.add_argument(
- '--eval-steps',
- help='Number of steps to run evalution for at each checkpoint',
- default=100,
- type=int
- )
- parser.add_argument(
- '--trainer-type',
- help='Which trainer to use (spam or component)',
- choices=['spam', 'component'],
- required=True
- )
-
- args = parser.parse_args()
-
- tf.logging.set_verbosity(args.verbosity)
-
- # Run the training job
- # learn_runner pulls configuration information from environment
- # variables using tf.learn.RunConfig and uses this configuration
- # to conditionally execute Experiment, or param server code.
- eval_results = learn_runner.run(
- generate_experiment_fn(
- min_eval_frequency=args.min_eval_frequency,
- eval_delay_secs=args.eval_delay_secs,
- train_steps=args.train_steps,
- eval_steps=args.eval_steps,
- export_strategies=[saved_model_export_utils.make_export_strategy(
- trainer.model.SERVING_FUNCTIONS['JSON-' + args.trainer_type],
- exports_to_keep=1,
- default_output_alternative_key=None,
- )],
- ),
- run_config=run_config.RunConfig(model_dir=args.job_dir),
- hparams=hparam.HParams(**args.__dict__)
- )
-
- # Store a json blob in GCS with the results of training job (AUC of
- # precision/recall, etc).
- if args.trainer_type == 'spam':
- store_eval(args.job_dir, eval_results)
diff --git a/tools/ml/trainer/top_words.py b/tools/ml/trainer/top_words.py
deleted file mode 100644
index 26da211..0000000
--- a/tools/ml/trainer/top_words.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import csv
-import os
-import re
-import StringIO
-import sys
-import tensorflow as tf
-import time
-
-from googleapiclient import discovery
-from googleapiclient import errors
-from oauth2client.client import GoogleCredentials
-import google
-from google.cloud.storage import blob, bucket, client
-
-import trainer.ml_helpers
-import trainer.dataset
-
-
-TOP_WORDS = 'topwords.txt'
-STOP_WORDS = 'stopwords.txt'
-
-
-def fetch_stop_words(project_id, objects):
- request = objects.get_media(bucket=project_id + '-mlengine',
- object=STOP_WORDS)
- response = trainer.dataset.make_api_request(request)
- return response.split()
-
-
-def fetch_training_csv(filepath, objects, b):
- request = objects.get_media(bucket=b, object=filepath)
- return trainer.dataset.make_api_request(request)
-
-
-def GenerateTopWords(objects, word_dict, project_id):
- stop_words = fetch_stop_words(project_id, objects)
- sorted_words = sorted(word_dict, key=word_dict.get, reverse=True)
-
- top_words = []
- index = 0
-
- while len(top_words) < trainer.ml_helpers.COMPONENT_FEATURES:
- if sorted_words[index] not in stop_words:
- top_words.append(sorted_words[index])
- index += 1
-
- return top_words
-
-
-def make_top_words_list(job_dir):
- """Returns the top (most common) words in the entire dataset for component
- prediction. If a file is already stored in GCS containing these words, the
- words from the file are simply returned. Otherwise, the most common words are
- determined and written to GCS, before being returned.
-
- Returns:
- A list of the most common words in the dataset (the number of them
- determined by ml_helpers.COMPONENT_FEATURES).
- """
-
- credentials = GoogleCredentials.get_application_default()
- storage = discovery.build('storage', 'v1', credentials=credentials)
- objects = storage.objects()
-
- subpaths = re.match('gs://(monorail-.*)-mlengine/(component_trainer_\d+)',
- job_dir)
-
- if subpaths:
- project_id = subpaths.group(1)
- trainer_folder = subpaths.group(2)
- else:
- project_id = 'monorail-prod'
-
- storage_bucket = project_id + '.appspot.com'
- request = objects.list(bucket=storage_bucket,
- prefix='component_training_data')
-
- response = trainer.dataset.make_api_request(request)
-
- items = response.get('items')
- csv_filepaths = [b.get('name') for b in items]
-
- final_string = ''
-
- for word in parse_words(csv_filepaths, objects, storage_bucket, project_id):
- final_string += word + '\n'
-
- if subpaths:
- client_obj = client.Client(project=project_id)
- bucket_obj = bucket.Bucket(client_obj, project_id + '-mlengine')
-
- bucket_obj.blob = google.cloud.storage.blob.Blob(trainer_folder
- + '/'
- + TOP_WORDS,
- bucket_obj)
- bucket_obj.blob.upload_from_string(final_string,
- content_type='text/plain')
- return final_string.split()
-
-
-def parse_words(files, objects, b, project_id):
- word_dict = {}
-
- csv.field_size_limit(sys.maxsize)
- for filepath in files:
- media = fetch_training_csv(filepath, objects, b)
-
- for row in csv.reader(StringIO.StringIO(media)):
- _, content = row
- words = content.split()
-
- for word in words:
- if word in word_dict:
- word_dict[word] += 1
- else:
- word_dict[word] = 1
-
- return GenerateTopWords(objects, word_dict, project_id)
diff --git a/tools/ml/trainer2/README.md b/tools/ml/trainer2/README.md
deleted file mode 100644
index d32c8bf..0000000
--- a/tools/ml/trainer2/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-### Trainer
-
-## Monorail Spam Classifier
-
-To have the trainer run locally, you'll need to supply the
-`--train-file` arguments.
-
-```sh
-TRAIN_FILE=./spam_training_examples.csv
-OUTPUT_DIR=/tmp/monospam-local-training/
-rm -rf $OUTPUT_DIR
-python3 ./task.py \
- --train-file $TRAIN_FILE \
- --job-dir $OUTPUT_DIR \
- --train-steps 1000 \
- --verbosity DEBUG \
- --trainer-type spam
-```
-## Monorail Component Predictor
-
-To have the trainer run locally, you'll need to supply the
-`--train-file` arguments.
-
-```sh
-TRAIN_FILE=./component_training_examples.csv
-OUTPUT_DIR=/tmp/monospam-local-training/
-rm -rf $OUTPUT_DIR
-python3 ./task.py \
- --train-file $TRAIN_FILE \
- --job-dir $OUTPUT_DIR \
- --train-steps 10000 \
- --eval-steps 1000 \
- --verbosity DEBUG \
- --trainer-type component
-```
\ No newline at end of file
diff --git a/tools/ml/trainer2/__init__.py b/tools/ml/trainer2/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tools/ml/trainer2/__init__.py
+++ /dev/null
diff --git a/tools/ml/trainer2/dataset.py b/tools/ml/trainer2/dataset.py
deleted file mode 100644
index 9e7ae77..0000000
--- a/tools/ml/trainer2/dataset.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2020 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import io
-import tensorflow as tf
-
-from googleapiclient import discovery
-from googleapiclient import errors
-from oauth2client.client import GoogleCredentials
-
-from trainer2 import train_ml_helpers
-
-
-def fetch_training_data(bucket, prefix, trainer_type):
-
- credentials = GoogleCredentials.get_application_default()
- storage = discovery.build('storage', 'v1', credentials=credentials)
- objects = storage.objects()
-
- request = objects.list(bucket=bucket, prefix=prefix)
- response = make_api_request(request)
- items = response.get('items')
- csv_filepaths = [blob.get('name') for blob in items]
-
- if trainer_type == 'spam':
- return fetch_spam(csv_filepaths, bucket, objects)
- else:
- return fetch_component(csv_filepaths, bucket, objects)
-
-
-def fetch_spam(csv_filepaths, bucket, objects):
-
- all_contents = []
- all_labels = []
- # Add code
- csv_filepaths = [
- 'spam-training-data/full-android.csv',
- 'spam-training-data/full-support.csv',
- ] + csv_filepaths
-
- for filepath in csv_filepaths:
- media = fetch_training_csv(filepath, objects, bucket)
- contents, labels, skipped_rows = train_ml_helpers.spam_from_file(
- io.StringIO(media))
-
- # Sanity check: the contents and labels should be matched pairs.
- if len(contents) == len(labels) != 0:
- all_contents.extend(contents)
- all_labels.extend(labels)
-
- tf.get_logger().info(
- '{:<40}{:<20}{:<20}'.format(
- filepath, 'added %d rows' % len(contents),
- 'skipped %d rows' % skipped_rows))
-
- return all_contents, all_labels
-
-
-def fetch_component(csv_filepaths, bucket, objects):
-
- all_contents = []
- all_labels = []
- for filepath in csv_filepaths:
- media = fetch_training_csv(filepath, objects, bucket)
- contents, labels = train_ml_helpers.component_from_file(io.StringIO(media))
-
- # Sanity check: the contents and labels should be matched pairs.
- if len(contents) == len(labels) != 0:
- all_contents.extend(contents)
- all_labels.extend(labels)
-
- tf.get_logger().info(
- '{:<40}{:<20}'.format(filepath, 'added %d rows' % len(contents)))
-
- return all_contents, all_labels
-
-
-def fetch_training_csv(filepath, objects, bucket):
- request = objects.get_media(bucket=bucket, object=filepath)
- return str(make_api_request(request), 'utf-8')
-
-
-def make_api_request(request):
- try:
- return request.execute()
- except errors.HttpError as err:
- tf.get_logger().error('There was an error with the API. Details:')
- tf.get_logger().error(err._get_reason())
- raise
diff --git a/tools/ml/trainer2/model.py b/tools/ml/trainer2/model.py
deleted file mode 100644
index 823d0d1..0000000
--- a/tools/ml/trainer2/model.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-
-import tensorflow as tf
-
-from trainer2.train_ml_helpers import COMPONENT_FEATURES
-from trainer2.train_ml_helpers import SPAM_FEATURE_HASHES
-
-# Important: we assume this list mirrors the output of GenerateFeaturesRaw.
-INPUT_COLUMNS = {'component': [
- tf.feature_column.numeric_column(
- key='word_features',
- shape=(COMPONENT_FEATURES,)),
- ],
- 'spam': [
- tf.feature_column.numeric_column(
- key='word_hashes',
- shape=(SPAM_FEATURE_HASHES,)),
- ]}
-
-def build_estimator(config, job_dir, trainer_type, class_count):
- """Returns a tf.Estimator.
-
- Args:
- config: tf.contrib.learn.RunConfig defining the runtime environment for the
- estimator (including model_dir).
- Returns:
- A LinearClassifier
- """
- return tf.estimator.DNNClassifier(
- config=config,
- model_dir=job_dir,
- feature_columns=(INPUT_COLUMNS[trainer_type]),
- hidden_units=[1024, 512, 256],
- optimizer=tf.keras.optimizers.Adam(learning_rate=0.001,
- beta_1=0.9,
- beta_2=0.999,
- epsilon=1e-08,
- name='Adam'),
- n_classes=class_count
- )
diff --git a/tools/ml/trainer2/requirements.txt b/tools/ml/trainer2/requirements.txt
deleted file mode 100644
index 7ff5ef7..0000000
--- a/tools/ml/trainer2/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-google-cloud-storage==1.26.0
-tensorflow==2.1.0
-scikit-learn[alldeps]
diff --git a/tools/ml/trainer2/stopwords.py b/tools/ml/trainer2/stopwords.py
deleted file mode 100644
index c4e4c31..0000000
--- a/tools/ml/trainer2/stopwords.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-# A list of stopwords to parse text in component predictor.
-STOP_WORDS = ['i', 'me', 'my', 'myself', 'we', 'our', 'ours',
- 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves',
- 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself',
- 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves',
- 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am',
- 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had',
- 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but',
- 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for',
- 'with', 'about', 'against', 'between', 'into', 'through', 'during',
- 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in',
- 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once',
- 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both',
- 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor',
- 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't',
- 'can', 'will', 'just', 'don', 'should', 'now']
diff --git a/tools/ml/trainer2/task.py b/tools/ml/trainer2/task.py
deleted file mode 100644
index 2fa8580..0000000
--- a/tools/ml/trainer2/task.py
+++ /dev/null
@@ -1,256 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-
-import argparse
-import json
-import logging
-import os
-
-import tensorflow as tf
-from tensorflow.estimator import RunConfig
-from sklearn.model_selection import train_test_split
-
-from trainer2 import dataset
-from trainer2 import model
-from trainer2 import top_words
-from trainer2 import train_ml_helpers
-from trainer2.train_ml_helpers import COMPONENT_FEATURES
-from trainer2.train_ml_helpers import SPAM_FEATURE_HASHES
-
-INPUT_TYPE_MAP = {
- 'component': {'key': 'word_features', 'shape': (COMPONENT_FEATURES,)},
- 'spam': {'key': 'word_hashes', 'shape': (SPAM_FEATURE_HASHES,)}
-}
-
-
-def make_input_fn(trainer_type, features, targets,
- num_epochs=None, shuffle=True, batch_size=128):
- """Generate input function for training and testing.
-
- Args:
- trainer_type: spam / component
- features: an array of features shape like INPUT_TYPE_MAP
- targets: an array of labels with the same length of features
- num_epochs: training epochs
- batch_size: dataset batch size
-
- Returns:
- input function to feed into TrainSpec and EvalSpec.
- """
- def _input_fn():
- def gen():
- """Generator function to format feature and target. """
- for feature, target in zip(features, targets):
- yield feature[INPUT_TYPE_MAP[trainer_type]['key']], target
-
- data = tf.data.Dataset.from_generator(
- gen, (tf.float64, tf.int32),
- output_shapes=(INPUT_TYPE_MAP[trainer_type]['shape'], ()))
- data = data.map(lambda x, y: ({INPUT_TYPE_MAP[trainer_type]['key']: x}, y))
- if shuffle:
- data = data.shuffle(buffer_size=batch_size * 10)
- data = data.repeat(num_epochs).batch(batch_size)
- return data
-
- return _input_fn
-
-
-def generate_json_input_fn(trainer_type):
- """Generate ServingInputReceiver function for testing.
-
- Args:
- trainer_type: spam / component
-
- Returns:
- ServingInputReceiver function to feed into exporter.
- """
- feature_spec = {
- INPUT_TYPE_MAP[trainer_type]['key']:
- tf.io.FixedLenFeature(INPUT_TYPE_MAP[trainer_type]['shape'], tf.float32)
- }
- return tf.estimator.export.build_parsing_serving_input_receiver_fn(
- feature_spec)
-
-
-def train_and_evaluate_model(config, hparams):
- """Runs the local training job given provided command line arguments.
-
- Args:
- config: RunConfig object
- hparams: dictionary passed by command line arguments
-
- """
-
- if hparams['train_file']:
- with open(hparams['train_file']) as f:
- if hparams['trainer_type'] == 'spam':
- contents, labels, _ = train_ml_helpers.spam_from_file(f)
- else:
- contents, labels = train_ml_helpers.component_from_file(f)
- else:
- contents, labels = dataset.fetch_training_data(
- hparams['gcs_bucket'], hparams['gcs_prefix'], hparams['trainer_type'])
-
- logger.info('Training data received. Len: %d' % len(contents))
-
- # Generate features and targets from extracted contents and labels.
- if hparams['trainer_type'] == 'spam':
- features, targets = train_ml_helpers \
- .transform_spam_csv_to_features(contents, labels)
- else:
- #top_list = top_words.make_top_words_list(contents, hparams['job_dir'])
- top_list = top_words.parse_words_from_content(contents)
- features, targets, index_to_component = train_ml_helpers \
- .transform_component_csv_to_features(contents, labels, top_list)
-
- # Split training and testing set.
- logger.info('Features generated')
- features_train, features_test, targets_train, targets_test = train_test_split(
- features, targets, test_size=0.2, random_state=42)
-
- # Generate TrainSpec and EvalSpec for train and evaluate.
- estimator = model.build_estimator(config=config,
- job_dir=hparams['job_dir'],
- trainer_type=hparams['trainer_type'],
- class_count=len(set(labels)))
- exporter = tf.estimator.LatestExporter(name='saved_model',
- serving_input_receiver_fn=generate_json_input_fn(hparams['trainer_type']))
-
- train_spec = tf.estimator.TrainSpec(
- input_fn=make_input_fn(hparams['trainer_type'],
- features_train, targets_train, num_epochs=hparams['num_epochs'],
- batch_size=hparams['train_batch_size']),
- max_steps=hparams['train_steps'])
- eval_spec = tf.estimator.EvalSpec(
- input_fn=make_input_fn(hparams['trainer_type'],
- features_test, targets_test, shuffle=False,
- batch_size=hparams['eval_batch_size']),
- exporters=exporter, steps=hparams['eval_steps'])
-
- if hparams['trainer_type'] == 'component':
- store_component_conversion(hparams['job_dir'], index_to_component)
-
- result = tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
- logging.info(result)
-
- parsing_spec = tf.feature_column.make_parse_example_spec(
- model.INPUT_COLUMNS[hparams['trainer_type']])
- serving_input_fn = (
- tf.estimator.export.build_parsing_serving_input_receiver_fn(parsing_spec))
- estimator.export_saved_model(hparams['job_dir'], serving_input_fn)
-
-
-def store_component_conversion(job_dir, data):
- logger.info('job_dir: %s' % job_dir)
-
- # Store component conversion locally.
- paths = job_dir.split('/')
- for y, _ in enumerate(list(range(1, len(paths))), 1):
- if not os.path.exists("/".join(paths[:y+1])):
- os.makedirs('/'.join(paths[:y+1]))
- with open(job_dir + '/component_index.json', 'w') as f:
- f.write(json.dumps(data))
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- # Input Arguments
- parser.add_argument(
- '--train-file',
- help='GCS or local path to training data',
- )
- parser.add_argument(
- '--gcs-bucket',
- help='GCS bucket for training data.',
- )
- parser.add_argument(
- '--gcs-prefix',
- help='Training data path prefix inside GCS bucket.',
- )
- parser.add_argument(
- '--num-epochs',
- help="""\
- Maximum number of training data epochs on which to train.
- If both --train-steps and --num-epochs are specified,
- the training job will run for --num-epochs.
- If unspecified will run for --train-steps.\
- """,
- type=int,
- )
- parser.add_argument(
- '--train-batch-size',
- help='Batch size for training steps',
- type=int,
- default=128
- )
- parser.add_argument(
- '--eval-batch-size',
- help='Batch size for evaluation steps',
- type=int,
- default=128
- )
-
- # Training arguments
- parser.add_argument(
- '--job-dir',
- help='GCS location to write checkpoints and export models',
- required=True
- )
-
- # Logging arguments
- parser.add_argument(
- '--verbosity',
- choices=[
- 'DEBUG',
- 'ERROR',
- 'CRITICAL',
- 'INFO',
- 'WARNING'
- ],
- default='INFO',
- )
-
- # Input function arguments
- parser.add_argument(
- '--train-steps',
- help="""\
- Steps to run the training job for. If --num-epochs is not specified,
- this must be. Otherwise the training job will run indefinitely.\
- """,
- type=int,
- required=True
- )
- parser.add_argument(
- '--eval-steps',
- help='Number of steps to run evalution for at each checkpoint',
- default=100,
- type=int
- )
- parser.add_argument(
- '--trainer-type',
- help='Which trainer to use (spam or component)',
- choices=['spam', 'component'],
- required=True
- )
-
- args = parser.parse_args()
-
- logger = logging.getLogger()
- logger.setLevel(getattr(logging, args.verbosity))
-
- if not args.num_epochs:
- args.num_epochs = args.train_steps
-
- # Set C++ Graph Execution level verbosity.
- os.environ['TF_CPP_MIN_LOG_LEVEL'] = str(
- getattr(logging, args.verbosity) / 10)
-
- # Run the training job.
- train_and_evaluate_model(
- config=RunConfig(model_dir=args.job_dir),
- hparams=vars(args))
diff --git a/tools/ml/trainer2/top_words.py b/tools/ml/trainer2/top_words.py
deleted file mode 100644
index bb57699..0000000
--- a/tools/ml/trainer2/top_words.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-from __future__ import absolute_import
-
-import os
-
-from trainer2 import train_ml_helpers
-from trainer2.stopwords import STOP_WORDS
-
-
-def GenerateTopWords(word_dict):
- """Requires ./stopwords.txt exist in folder for the function to run.
- """
- stop_words = [s.encode('utf-8') for s in STOP_WORDS]
- sorted_words = sorted(word_dict, key=word_dict.get, reverse=True)
- top_words = []
- index = 0
-
- while len(top_words) < train_ml_helpers.COMPONENT_FEATURES:
- if sorted_words[index] not in stop_words:
- top_words.append(sorted_words[index])
- index += 1
-
- return top_words
-
-
-def parse_words_from_content(contents):
- """Returns given list of strings, extract the top (most common) words.
- """
- word_dict = {}
- for content in contents:
- words = content.encode('utf-8').split()
- for word in words:
- if word in word_dict:
- word_dict[word] += 1
- else:
- word_dict[word] = 1
-
- return GenerateTopWords(word_dict)
-
-
-def make_top_words_list(contents, job_dir):
- """Returns the top (most common) words in the entire dataset for component
- prediction. If a file is already stored in job_dir containing these words, the
- words from the file are simply returned. Otherwise, the most common words are
- determined and written to job_dir, before being returned.
-
- Returns:
- A list of the most common words in the dataset (the number of them
- determined by train_ml_helpers.COMPONENT_FEATURES).
- """
- if not os.path.exists(job_dir):
- os.mkdir(job_dir)
- if os.access(job_dir + 'topwords.txt', os.R_OK):
- print("Found topwords.txt")
- with open(job_dir + 'topwords.txt', 'rb') as f:
- top_words = f.read().split()
- else:
- top_words = parse_words_from_content(contents)
- with open(job_dir + 'topwords.txt', 'w') as f:
- for word in top_words:
- f.write('%s\n' % word.decode('utf-8'))
- return top_words
diff --git a/tools/ml/trainer2/train_ml_helpers.py b/tools/ml/trainer2/train_ml_helpers.py
deleted file mode 100644
index 36113a2..0000000
--- a/tools/ml/trainer2/train_ml_helpers.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-# Or at https://developers.google.com/open-source/licenses/bsd
-
-"""
-Helper functions for spam and component classification. These are mostly for
-feature extraction, so that the serving code and training code both use the same
-set of features.
-TODO(jeffcarp): This file is duplicate of services/ml_helpers.py
- (with slight difference). Will eventually be merged to one.
-"""
-
-from __future__ import absolute_import
-
-import csv
-import hashlib
-import re
-import sys
-
-SPAM_COLUMNS = ['verdict', 'subject', 'content', 'email']
-LEGACY_CSV_COLUMNS = ['verdict', 'subject', 'content']
-DELIMITERS = [r'\s', r'\,', r'\.', r'\?', r'!', r'\:', r'\(', r'\)']
-
-# Must be identical to settings.spam_feature_hashes.
-SPAM_FEATURE_HASHES = 500
-# Must be identical to settings.component_features.
-COMPONENT_FEATURES = 5000
-
-
-def _ComponentFeatures(content, num_features, top_words):
- """
- This uses the most common words in the entire dataset as features.
- The count of common words in the issue comments makes up the features.
- """
-
- features = [0] * num_features
- for blob in content:
- words = blob.split()
- for word in words:
- if word in top_words:
- features[top_words[word]] += 1
-
- return features
-
-
-def _SpamHashFeatures(content, num_features):
- """
- Feature hashing is a fast and compact way to turn a string of text into a
- vector of feature values for classification and training.
- See also: https://en.wikipedia.org/wiki/Feature_hashing
- This is a simple implementation that doesn't try to minimize collisions
- or anything else fancy.
- """
- features = [0] * num_features
- total = 0.0
- for blob in content:
- words = re.split('|'.join(DELIMITERS).encode('utf-8'), blob)
- for word in words:
- feature_index = int(int(hashlib.sha1(word).hexdigest(), 16)
- % num_features)
- features[feature_index] += 1.0
- total += 1.0
-
- if total > 0:
- features = [f / total for f in features]
-
- return features
-
-
-def GenerateFeaturesRaw(content, num_features, top_words=None):
- """Generates a vector of features for a given issue or comment.
-
- Args:
- content: The content of the issue's description and comments.
- num_features: The number of features to generate.
- """
- # If we've been passed real unicode strings, convert them to just bytestrings.
- for idx, value in enumerate(content):
- content[idx] = value.encode('utf-8')
- if top_words:
- return {'word_features': _ComponentFeatures(content,
- num_features,
- top_words)}
-
- return {'word_hashes': _SpamHashFeatures(content, num_features)}
-
-
-def transform_spam_csv_to_features(contents, labels):
- """Generate arrays of features and targets for spam.
- """
- features = []
- targets = []
- for i, row in enumerate(contents):
- subject, content = row
- label = labels[i]
- features.append(GenerateFeaturesRaw([str(subject), str(content)],
- SPAM_FEATURE_HASHES))
- targets.append(1 if label == 'spam' else 0)
- return features, targets
-
-
-def transform_component_csv_to_features(contents, labels, top_list):
- """Generate arrays of features and targets for components.
- """
- features = []
- targets = []
- top_words = {}
-
- for i, row in enumerate(top_list):
- top_words[row] = i
-
- component_to_index = {}
- index_to_component = {}
- component_index = 0
-
- for i, content in enumerate(contents):
- component = labels[i]
- component = str(component).split(",")[0]
-
- if component not in component_to_index:
- component_to_index[component] = component_index
- index_to_component[component_index] = component
- component_index += 1
-
- features.append(GenerateFeaturesRaw([content],
- COMPONENT_FEATURES,
- top_words))
- targets.append(component_to_index[component])
-
- return features, targets, index_to_component
-
-
-def spam_from_file(f):
- """Reads a training data file and returns arrays of contents and labels."""
- contents = []
- labels = []
- skipped_rows = 0
- for row in csv.reader(f):
- if len(row) >= len(LEGACY_CSV_COLUMNS):
- # Throw out email field.
- contents.append(row[1:3])
- labels.append(row[0])
- else:
- skipped_rows += 1
- return contents, labels, skipped_rows
-
-
-def component_from_file(f):
- """Reads a training data file and returns arrays of contents and labels."""
- contents = []
- labels = []
- csv.field_size_limit(sys.maxsize)
- for row in csv.reader(f):
- label, content = row
- contents.append(content)
- labels.append(label)
- return contents, labels
diff --git a/tracker/componentcreate.py b/tracker/componentcreate.py
index 9cb713c..9974879 100644
--- a/tracker/componentcreate.py
+++ b/tracker/componentcreate.py
@@ -11,6 +11,7 @@
import logging
import time
+from framework import flaskservlet
from framework import framework_helpers
from framework import framework_views
from framework import jsonfeed
@@ -28,7 +29,7 @@
class ComponentCreate(servlet.Servlet):
"""Servlet allowing project owners to create a component."""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PAGE_TEMPLATE = 'tracker/component-create-page.ezt'
def AssertBasePermission(self, mr):
@@ -136,6 +137,12 @@
return framework_helpers.FormatAbsoluteURL(
mr, urls.ADMIN_COMPONENTS, saved=1, ts=int(time.time()))
+ # def GetComponentCreatePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostComponentCreatePage(self, **kwargs):
+ # return self.handler(**kwargs)
+
def LeafNameErrorMessage(parent_path, leaf_name, config):
"""Return an error message for the given component name, or None."""
diff --git a/tracker/fieldcreate.py b/tracker/fieldcreate.py
index ead72ad..b1f2316 100644
--- a/tracker/fieldcreate.py
+++ b/tracker/fieldcreate.py
@@ -15,6 +15,7 @@
import ezt
from framework import exceptions
+from framework import flaskservlet
from framework import framework_helpers
from framework import jsonfeed
from framework import permissions
@@ -30,7 +31,7 @@
class FieldCreate(servlet.Servlet):
"""Servlet allowing project owners to create a custom field."""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PAGE_TEMPLATE = 'tracker/field-create-page.ezt'
def AssertBasePermission(self, mr):
@@ -198,6 +199,12 @@
return framework_helpers.FormatAbsoluteURL(
mr, urls.ADMIN_LABELS, saved=1, ts=int(time.time()))
+ # def GetFieldCreate(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostFieldCreate(self, **kwargs):
+ # return self.handler(**kwargs)
+
def FieldNameErrorMessage(field_name, config):
"""Return an error message for the given field name, or None."""
diff --git a/tracker/fielddetail.py b/tracker/fielddetail.py
index 3e7ebb3..76cf378 100644
--- a/tracker/fielddetail.py
+++ b/tracker/fielddetail.py
@@ -15,6 +15,7 @@
import ezt
from framework import exceptions
+from framework import flaskservlet
from framework import framework_helpers
from framework import framework_views
from framework import permissions
@@ -30,7 +31,7 @@
class FieldDetail(servlet.Servlet):
"""Servlet allowing project owners to view and edit a custom field."""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PAGE_TEMPLATE = 'tracker/field-detail-page.ezt'
def _GetFieldDef(self, mr):
@@ -247,3 +248,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, urls.FIELD_DETAIL, field=field_def.field_name,
saved=1, ts=int(time.time()))
+
+ # def GetFieldDetail(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostFieldDetail(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/fltconversion.py b/tracker/fltconversion.py
index c26ab62..e42b432 100644
--- a/tracker/fltconversion.py
+++ b/tracker/fltconversion.py
@@ -134,6 +134,7 @@
'phase_map, approvals_to_labels, labels_re')
+# TODO: change to FlaskInternalTask when convert to flask
class FLTConvertTask(jsonfeed.InternalTask):
"""FLTConvert converts current Type=Launch issues into Type=FLT-Launch."""
@@ -530,6 +531,12 @@
return tracker_bizobj.MakeFieldValue(
field_id, None, None, user_id, None, None, False)
+ # def GetFLTConvertTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostFLTConvertTask(self, **kwargs):
+ # return self.handler(**kwargs)
+
def ConvertMLabels(
labels, phases, m_target_id, m_approved_id, labels_re, phase_map):
diff --git a/tracker/issueadmin.py b/tracker/issueadmin.py
index 5c34f72..10fbdc8 100644
--- a/tracker/issueadmin.py
+++ b/tracker/issueadmin.py
@@ -24,6 +24,7 @@
from features import filterrules_views
from features import savedqueries_helpers
from framework import authdata
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_constants
from framework import framework_helpers
@@ -43,7 +44,7 @@
class IssueAdminBase(servlet.Servlet):
"""Base class for servlets allowing project owners to configure tracker."""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PROCESS_SUBTAB = None # specified in subclasses
def GatherPageData(self, mr):
@@ -90,7 +91,7 @@
"""Servlet allowing project owners to configure well-known statuses."""
_PAGE_TEMPLATE = 'tracker/admin-statuses-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_STATUSES
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_STATUSES
def ProcessSubtabForm(self, post_data, mr):
"""Process the status definition section of the admin page.
@@ -141,12 +142,18 @@
return urls.ADMIN_STATUSES
+ # def GetAdminStatusesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminStatusesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class AdminLabels(IssueAdminBase):
"""Servlet allowing project owners to labels and fields."""
_PAGE_TEMPLATE = 'tracker/admin-labels-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_LABELS
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_LABELS
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page.
@@ -224,12 +231,18 @@
return urls.ADMIN_LABELS
+ # def GetAdminLabelsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminLabelsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class AdminTemplates(IssueAdminBase):
"""Servlet allowing project owners to configure templates."""
_PAGE_TEMPLATE = 'tracker/admin-templates-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_TEMPLATES
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_TEMPLATES
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page.
@@ -288,12 +301,18 @@
return (GetSelectedTemplateID('default_template_for_developers'),
GetSelectedTemplateID('default_template_for_users'))
+ # def GetAdminTemplatesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminTemplatesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class AdminComponents(IssueAdminBase):
"""Servlet allowing project owners to view the list of components."""
_PAGE_TEMPLATE = 'tracker/admin-components-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_COMPONENTS
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_COMPONENTS
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page.
@@ -398,12 +417,18 @@
failed_templ=','.join(templates_errors),
deleted=','.join(deleted_components))
+ # def GetAdminComponentsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminComponentsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
class AdminViews(IssueAdminBase):
"""Servlet for project owners to set default columns, axes, and sorting."""
_PAGE_TEMPLATE = 'tracker/admin-views-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_VIEWS
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_VIEWS
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page.
@@ -463,6 +488,12 @@
return urls.ADMIN_VIEWS
+ # def GetAdminViewsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminViewsPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
def _ParseListPreferences(post_data):
"""Parse the part of a project admin form about artifact list preferences."""
@@ -509,7 +540,7 @@
"""Servlet allowing project owners to configure filter rules."""
_PAGE_TEMPLATE = 'tracker/admin-rules-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_RULES
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_RULES
def AssertBasePermission(self, mr):
"""Check whether the user has any permission to visit this page.
@@ -585,3 +616,9 @@
mr.cnxn, self.services, mr.project, config)
return urls.ADMIN_RULES
+
+ # def GetAdminRulesPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostAdminRulesPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issueadvsearch.py b/tracker/issueadvsearch.py
index d824098..f702763 100644
--- a/tracker/issueadvsearch.py
+++ b/tracker/issueadvsearch.py
@@ -17,6 +17,7 @@
import re
from features import savedqueries_helpers
+from framework import flaskservlet
from framework import framework_helpers
from framework import permissions
from framework import servlet
@@ -31,7 +32,7 @@
"""IssueAdvancedSearch shows a form to enter an advanced search."""
_PAGE_TEMPLATE = 'tracker/issue-advsearch-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
# This form *only* redirects to a GET request, and permissions are checked
# in that handler.
@@ -121,3 +122,9 @@
values = VALUE_RE.findall(user_input)
search_term = '%s%s' % (operator, ','.join(values))
search_query.append(search_term)
+
+ # def GetIssueAdvSearchPage(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueAdvSearchPage(self, **kwargs):
+ # return self.handler(**kwargs)
\ No newline at end of file
diff --git a/tracker/issueattachment.py b/tracker/issueattachment.py
index d6fa978..26982d0 100644
--- a/tracker/issueattachment.py
+++ b/tracker/issueattachment.py
@@ -18,14 +18,13 @@
import logging
import os
import re
-import urllib
-
-import webapp2
+from six.moves import urllib
from google.appengine.api import app_identity
from google.appengine.api import images
from framework import exceptions
+from framework import flaskservlet
from framework import framework_constants
from framework import framework_helpers
from framework import gcs_helpers
@@ -54,20 +53,20 @@
Returns: dict of values used by EZT for rendering the page.
"""
if mr.signed_aid != attachment_helpers.SignAttachmentID(mr.aid):
- webapp2.abort(400, 'Please reload the issue page')
+ self.abort(400, 'Please reload the issue page')
try:
attachment, _issue = tracker_helpers.GetAttachmentIfAllowed(
mr, self.services)
except exceptions.NoSuchIssueException:
- webapp2.abort(404, 'issue not found')
+ self.abort(404, 'issue not found')
except exceptions.NoSuchAttachmentException:
- webapp2.abort(404, 'attachment not found')
+ self.abort(404, 'attachment not found')
except exceptions.NoSuchCommentException:
- webapp2.abort(404, 'comment not found')
+ self.abort(404, 'comment not found')
if not attachment.gcs_object_id:
- webapp2.abort(404, 'attachment data not found')
+ self.abort(404, 'attachment data not found')
bucket_name = app_identity.get_default_gcs_bucket_name()
@@ -91,3 +90,6 @@
url = gcs_helpers.SignUrl(bucket_name, gcs_object_id)
self.redirect(url, abort=True)
+
+ # def GetAttachmentPage(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issueattachmenttext.py b/tracker/issueattachmenttext.py
index d3daaf9..40db170 100644
--- a/tracker/issueattachmenttext.py
+++ b/tracker/issueattachmenttext.py
@@ -14,15 +14,13 @@
import logging
-import webapp2
-
-from google.appengine.api import app_identity
-
-from third_party import cloudstorage
import ezt
+from google.appengine.api import app_identity
+from google.cloud import storage
from features import prettify
from framework import exceptions
+from framework import flaskservlet
from framework import filecontent
from framework import permissions
from framework import servlet
@@ -36,7 +34,7 @@
"""AttachmentText displays textual attachments much like source browsing."""
_PAGE_TEMPLATE = 'tracker/issue-attachment-text.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
def GatherPageData(self, mr):
"""Parse the attachment ID from the request and serve its content.
@@ -52,19 +50,27 @@
attachment, issue = tracker_helpers.GetAttachmentIfAllowed(
mr, self.services)
except exceptions.NoSuchIssueException:
- webapp2.abort(404, 'issue not found')
+ self.abort(404, 'issue not found')
except exceptions.NoSuchAttachmentException:
- webapp2.abort(404, 'attachment not found')
+ self.abort(404, 'attachment not found')
except exceptions.NoSuchCommentException:
- webapp2.abort(404, 'comment not found')
+ self.abort(404, 'comment not found')
- content = []
+ content = b''
if attachment.gcs_object_id:
bucket_name = app_identity.get_default_gcs_bucket_name()
full_path = '/' + bucket_name + attachment.gcs_object_id
logging.info("reading gcs: %s" % full_path)
- with cloudstorage.open(full_path, 'r') as f:
- content = f.read()
+
+ # Strip leading slash from object ID for backwards compatibility.
+ blob_name = attachment.gcs_object_id
+ if blob_name.startswith('/'):
+ blob_name = blob_name[1:]
+
+ client = storage.Client()
+ bucket = client.get_bucket(bucket_name)
+ blob = bucket.get_blob(blob_name)
+ content = blob.download_as_bytes()
filesize = len(content)
@@ -101,3 +107,6 @@
len(lines), attachment.filename))
return page_data
+
+ # def GetAttachmentText(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issuebulkedit.py b/tracker/issuebulkedit.py
index c1f5229..3ea4d3f 100644
--- a/tracker/issuebulkedit.py
+++ b/tracker/issuebulkedit.py
@@ -14,7 +14,7 @@
from __future__ import absolute_import
import collections
-import httplib
+from six.moves import http_client
import itertools
import logging
import time
@@ -24,6 +24,7 @@
from features import filterrules_helpers
from features import send_notifications
from framework import exceptions
+from framework import flaskservlet
from framework import framework_constants
from framework import framework_views
from framework import permissions
@@ -41,7 +42,7 @@
"""IssueBulkEdit lists multiple issues and allows an edit to all of them."""
_PAGE_TEMPLATE = 'tracker/issue-bulk-edit-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
_SECONDS_OVERHEAD = 4
_SECONDS_PER_UPDATE = 0.12
_SLOWNESS_THRESHOLD = 10
@@ -170,31 +171,41 @@
"""
if not mr.local_id_list:
logging.info('missing issue local IDs, probably tampered')
- self.response.status = httplib.BAD_REQUEST
+ #TODO: switch when convert /p to flask
+ # self.response.status_code = http_client.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
return
# Check that the user is logged in; anon users cannot update issues.
if not mr.auth.user_id:
logging.info('user was not logged in, cannot update issue')
- self.response.status = httplib.BAD_REQUEST # xxx should raise except
+ #TODO: switch when convert /p to flask
+ # self.response.status_code = http_client.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
return
# Check that the user has permission to add a comment, and to enter
# metadata if they are trying to do that.
if not self.CheckPerm(mr, permissions.ADD_ISSUE_COMMENT):
logging.info('user has no permission to add issue comment')
- self.response.status = httplib.BAD_REQUEST
+ #TODO: switch when convert /p to flask
+ # self.response.status_code = http_client.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
return
if not self.CheckPerm(mr, permissions.EDIT_ISSUE):
logging.info('user has no permission to edit issue metadata')
- self.response.status = httplib.BAD_REQUEST
+ #TODO: switch when convert /p to flask
+ # self.response.status_code = http_client.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
return
move_to = post_data.get('move_to', '').lower()
if move_to and not self.CheckPerm(mr, permissions.DELETE_ISSUE):
logging.info('user has no permission to move issue')
- self.response.status = httplib.BAD_REQUEST
+ #TODO: switch when convert /p to flask
+ # self.response.status_code = http_client.BAD_REQUEST
+ self.response.status = http_client.BAD_REQUEST
return
config = self.services.config.GetProjectConfig(mr.cnxn, mr.project_id)
@@ -471,3 +482,9 @@
# TODO(jrobbins): implement bulk=N param for a better confirmation alert.
return tracker_helpers.FormatIssueListURL(
mr, config, saved=len(mr.local_id_list), ts=int(time.time()))
+
+ # def GetIssueBulkEdit(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueBulkEdit(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issuedetailezt.py b/tracker/issuedetailezt.py
index 9460669..3a10443 100644
--- a/tracker/issuedetailezt.py
+++ b/tracker/issuedetailezt.py
@@ -14,7 +14,6 @@
from __future__ import division
from __future__ import absolute_import
-import httplib
import json
import logging
import time
@@ -28,6 +27,7 @@
from features import hotlist_helpers
from features import hotlist_views
from framework import exceptions
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_constants
from framework import framework_helpers
@@ -159,14 +159,23 @@
class FlipperNext(FlipperRedirectBase):
next_handler = True
+ # def GetFlipperNextRedirectPage(self, **kwargs):
+ # self.next_handler = True
+ # return self.handler(**kwargs)
+
class FlipperPrev(FlipperRedirectBase):
next_handler = False
+ # def GetFlipperPrevRedirectPage(self, **kwargs):
+ # self.next_handler = False
+ # return self.handler(**kwargs)
+
class FlipperList(servlet.Servlet):
# pylint: disable=arguments-differ
# pylint: disable=unused-argument
+ # TODO: (monorail:6511)change to get(self) when convert to flask
def get(self, project_name=None, viewed_username=None, hotlist_id=None):
with work_env.WorkEnv(self.mr, self.services) as we:
hotlist_id = self.mr.GetIntParam('hotlist_id')
@@ -190,7 +199,11 @@
hotlist, self.services)
self.redirect(url)
+ # def GetFlipperList(self, **kwargs):
+ # return self.handler(**kwargs)
+
+# TODO: (monorail:6511) change to flaskJsonFeed when convert to flask
class FlipperIndex(jsonfeed.JsonFeed):
"""Return a JSON object of an issue's index in search.
@@ -261,6 +274,12 @@
'total_count': total_count,
}
+ # def GetFlipperIndex(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostFlipperIndex(self, **kwargs):
+ # return self.handler(**kwargs)
+
def _ShouldShowFlipper(mr, services):
"""Return True if we should show the flipper."""
diff --git a/tracker/issueentry.py b/tracker/issueentry.py
index 77de114..2ae59d8 100644
--- a/tracker/issueentry.py
+++ b/tracker/issueentry.py
@@ -18,6 +18,7 @@
from features import hotlist_helpers
from features import send_notifications
from framework import exceptions
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_constants
from framework import framework_helpers
@@ -45,7 +46,7 @@
"""IssueEntry shows a page with a simple form to enter a new issue."""
_PAGE_TEMPLATE = 'tracker/issue-entry-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
# The issue filing wizard is a separate app that posted back to Monorail's
# issue entry page. To make this possible for the wizard, we need to allow
@@ -511,6 +512,12 @@
return template
+ # def GetIssueEntry(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueEntry(self, **kwargs):
+ # return self.handler(**kwargs)
+
def _AttachDefaultApprovers(config, approval_values):
approval_defs_by_id = {ad.approval_id: ad for ad in config.approval_defs}
diff --git a/tracker/issueentryafterlogin.py b/tracker/issueentryafterlogin.py
index d25a7c1..3008d54 100644
--- a/tracker/issueentryafterlogin.py
+++ b/tracker/issueentryafterlogin.py
@@ -11,6 +11,7 @@
import logging
+from framework import flaskservlet
from framework import servlet
from framework import servlet_helpers
@@ -25,8 +26,9 @@
if not mr.auth.user_id:
self.abort(400, 'Only signed-in users should reach this URL.')
- with mr.profiler.Phase('getting config'):
- config = self.services.config.GetProjectConfig(mr.cnxn, mr.project_id)
- entry_page_url = servlet_helpers.ComputeIssueEntryURL(mr, config)
+ entry_page_url = servlet_helpers.ComputeIssueEntryURL(mr)
logging.info('Redirecting to %r', entry_page_url)
self.redirect(entry_page_url, abort=True)
+
+ # def GetIssueEntryAfterLogin(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issueexport.py b/tracker/issueexport.py
index a457a17..91620c4 100644
--- a/tracker/issueexport.py
+++ b/tracker/issueexport.py
@@ -16,6 +16,7 @@
from businesslogic import work_env
from features import savedqueries_helpers
+from framework import flaskservlet
from framework import permissions
from framework import jsonfeed
from framework import servlet
@@ -26,7 +27,7 @@
"""IssueExportControls let's an admin choose how to export issues."""
_PAGE_TEMPLATE = 'tracker/issue-export-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
def AssertBasePermission(self, mr):
"""Make sure that the logged in user has permission to view this page."""
@@ -69,7 +70,11 @@
'saved_queries': saved_query_views,
}
+ # def GetIssueExport(self, **kwargs):
+ # return self.handler(**kwargs)
+
+# TODO: convert to FLaskJsonFeed while conver to flask
class IssueExportJSON(jsonfeed.JsonFeed):
"""IssueExport shows a range of issues in JSON format."""
@@ -277,3 +282,9 @@
if merge.project_id == mr.project.project_id:
issue_json['merged_into'] = merge.local_id
return issue_json
+
+ # def GetIssueExportJSON(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueExportJSON(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issueimport.py b/tracker/issueimport.py
index 1e0289b..bd54db9 100644
--- a/tracker/issueimport.py
+++ b/tracker/issueimport.py
@@ -17,6 +17,7 @@
import ezt
from features import filterrules_helpers
+from framework import flaskservlet
from framework import framework_helpers
from framework import jsonfeed
from framework import permissions
@@ -35,7 +36,7 @@
"""IssueImport loads a file of issues in JSON format."""
_PAGE_TEMPLATE = 'tracker/issue-import-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
def AssertBasePermission(self, mr):
"""Make sure that the logged in user has permission to view this page."""
@@ -304,6 +305,12 @@
self.services.issue.SetUsedLocalID(cnxn, project_id)
event_log.append('Finished import')
+ # def GetIssueImport(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueImport(self, **kwargs):
+ # return self.handler(**kwargs)
+
class JSONImportError(Exception):
"""Exception to raise if imported JSON is invalid."""
diff --git a/tracker/issueoriginal.py b/tracker/issueoriginal.py
index 55a494f..cbab3b1 100644
--- a/tracker/issueoriginal.py
+++ b/tracker/issueoriginal.py
@@ -17,6 +17,7 @@
import ezt
from businesslogic import work_env
+from framework import flaskservlet
from framework import filecontent
from framework import permissions
from framework import servlet
@@ -96,3 +97,6 @@
self.abort(404, 'comment not found')
return issue, comment
+
+ # def GetIssueOriginal(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issuereindex.py b/tracker/issuereindex.py
index de5d2f0..71acfe8 100644
--- a/tracker/issuereindex.py
+++ b/tracker/issuereindex.py
@@ -9,9 +9,10 @@
from __future__ import absolute_import
import logging
-import urllib
+from six.moves import urllib
import settings
+from framework import flaskservlet
from framework import permissions
from framework import servlet
from framework import urls
@@ -22,7 +23,7 @@
"""IssueReindex shows a form to request that issues be indexed."""
_PAGE_TEMPLATE = 'tracker/issue-reindex-page.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
def AssertBasePermission(self, mr):
"""Check whether the user has any permission to visit this page.
@@ -83,5 +84,11 @@
'num': num,
'auto_submit': bool(auto_submit),
}
- return '/p/%s%s?%s' % (mr.project_name, urls.ISSUE_REINDEX,
- urllib.urlencode(query_map))
+ return '/p/%s%s?%s' % (
+ mr.project_name, urls.ISSUE_REINDEX, urllib.parse.urlencode(query_map))
+
+ # def GetIssueReindex(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostIssueReindex(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/issuetips.py b/tracker/issuetips.py
index eb75265..f85bcd6 100644
--- a/tracker/issuetips.py
+++ b/tracker/issuetips.py
@@ -10,6 +10,7 @@
import logging
+from framework import flaskservlet
from framework import servlet
from framework import permissions
@@ -18,7 +19,7 @@
"""IssueSearchTips on-line help on how to use issue search."""
_PAGE_TEMPLATE = 'tracker/issue-search-tips.ezt'
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page."""
@@ -27,3 +28,6 @@
'issue_tab_mode': 'issueSearchTips',
'page_perms': self.MakePagePerms(mr, None, permissions.CREATE_ISSUE),
}
+
+ # def GetIssueSearchTips(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/spam.py b/tracker/spam.py
deleted file mode 100644
index a30fc3e..0000000
--- a/tracker/spam.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-"""Classes that implement spam flagging features.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-
-import httplib
-import logging
-
-from framework import framework_helpers
-from framework import paginate
-from framework import permissions
-from framework import urls
-from framework import servlet
-from framework import template_helpers
-from framework import xsrf
-from tracker import spam_helpers
-from tracker import tracker_bizobj
-
-
-class ModerationQueue(servlet.Servlet):
- _PAGE_TEMPLATE = 'tracker/spam-moderation-queue.ezt'
-
- def GatherPageData(self, mr):
- if not self.CheckPerm(mr, permissions.MODERATE_SPAM):
- raise permissions.PermissionException()
-
- page_perms = self.MakePagePerms(
- mr, None, permissions.MODERATE_SPAM,
- permissions.EDIT_ISSUE, permissions.CREATE_ISSUE,
- permissions.SET_STAR)
-
- # TODO(seanmccullough): Figure out how to get the IssueFlagQueue either
- # integrated into this page data, or on its own subtab of spam moderation.
- # Also figure out the same for Comments.
- issue_items, total_count = self.services.spam.GetIssueClassifierQueue(
- mr.cnxn, self.services.issue, mr.project.project_id, mr.start, mr.num)
-
- issue_queue = spam_helpers.DecorateIssueClassifierQueue(mr.cnxn,
- self.services.issue, self.services.spam, self.services.user,
- issue_items)
-
- url_params = [(name, mr.GetParam(name)) for name in
- framework_helpers.RECOGNIZED_PARAMS]
- p = paginate.ArtifactPagination(
- [], mr.num, mr.GetPositiveIntParam('start'),
- mr.project_name, urls.SPAM_MODERATION_QUEUE, total_count=total_count,
- url_params=url_params)
-
- return {
- 'issue_queue': issue_queue,
- 'projectname': mr.project.project_name,
- 'pagination': p,
- 'page_perms': page_perms,
- }
diff --git a/tracker/spam_helpers.py b/tracker/spam_helpers.py
deleted file mode 100644
index 2bf2c90..0000000
--- a/tracker/spam_helpers.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
-
-"""Set of helpers for constructing spam-related pages.
-"""
-from __future__ import print_function
-from __future__ import division
-from __future__ import absolute_import
-from framework import template_helpers
-import ezt
-
-from datetime import datetime
-
-def DecorateIssueClassifierQueue(
- cnxn, issue_service, spam_service, user_service, moderation_items):
- issue_ids = [item.issue_id for item in moderation_items]
- issues = issue_service.GetIssues(cnxn, issue_ids)
- issue_map = {}
- for issue in issues:
- issue_map[issue.issue_id] = issue
-
- flag_counts = spam_service.LookupIssueFlagCounts(cnxn, issue_ids)
-
- reporter_ids = [issue.reporter_id for issue in issues]
- reporters = user_service.GetUsersByIDs(cnxn, reporter_ids)
- comments = issue_service.GetCommentsForIssues(cnxn, issue_ids)
-
- items = []
- for item in moderation_items:
- issue=issue_map[item.issue_id]
- first_comment = comments.get(item.issue_id, ["[Empty]"])[0]
-
- items.append(template_helpers.EZTItem(
- issue=issue,
- summary=template_helpers.FitUnsafeText(issue.summary, 80),
- comment_text=template_helpers.FitUnsafeText(first_comment.content, 80),
- reporter=reporters[issue.reporter_id],
- flag_count=flag_counts.get(issue.issue_id, 0),
- is_spam=ezt.boolean(item.is_spam),
- verdict_time=item.verdict_time,
- classifier_confidence=item.classifier_confidence,
- reason=item.reason,
- ))
-
- return items
diff --git a/tracker/template_helpers.py b/tracker/template_helpers.py
index c567b4a..1f15bcc 100644
--- a/tracker/template_helpers.py
+++ b/tracker/template_helpers.py
@@ -47,6 +47,8 @@
content = framework_helpers.WordWrapSuperLongLines(content, max_cols=75)
status = post_data.get('status', '')
owner_str = post_data.get('owner', '')
+ # TODO(crbug.com/monorail/10936): switch when convert /p to flask
+ # labels = post_data.getlist('label')
labels = post_data.getall('label')
field_val_strs = collections.defaultdict(list)
for fd in config.field_defs:
diff --git a/tracker/templatecreate.py b/tracker/templatecreate.py
index e10a25b..139c4f5 100644
--- a/tracker/templatecreate.py
+++ b/tracker/templatecreate.py
@@ -15,6 +15,7 @@
import ezt
from framework import authdata
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_helpers
from framework import servlet
@@ -32,9 +33,9 @@
class TemplateCreate(servlet.Servlet):
"""Servlet allowing project owners to create an issue template."""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PAGE_TEMPLATE = 'tracker/template-detail-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_TEMPLATES
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_TEMPLATES
def AssertBasePermission(self, mr):
"""Check whether the user has any permission to visit this page.
@@ -191,3 +192,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, urls.ADMIN_TEMPLATES, saved=1, ts=int(time.time()))
+
+ # def GetTemplateCreate(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostTemplateCreate(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/templatedetail.py b/tracker/templatedetail.py
index cd48a80..a3386b4 100644
--- a/tracker/templatedetail.py
+++ b/tracker/templatedetail.py
@@ -15,6 +15,7 @@
import ezt
from framework import authdata
+from framework import flaskservlet
from framework import framework_bizobj
from framework import framework_helpers
from framework import framework_views
@@ -33,9 +34,9 @@
class TemplateDetail(servlet.Servlet):
"""Servlet allowing project owners to edit/delete an issue template"""
- _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
+ _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
_PAGE_TEMPLATE = 'tracker/template-detail-page.ezt'
- _PROCESS_SUBTAB = servlet.Servlet.PROCESS_TAB_TEMPLATES
+ _PROCESS_SUBTAB = flaskservlet.FlaskServlet.PROCESS_TAB_TEMPLATES
def AssertBasePermission(self, mr):
"""Check whether the user has any permission to visit this page.
@@ -243,3 +244,9 @@
return framework_helpers.FormatAbsoluteURL(
mr, urls.TEMPLATE_DETAIL, template=template.name,
saved=1, ts=int(time.time()))
+
+ # def GetTemplateDetail(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def PostTemplateDetail(self, **kwargs):
+ # return self.handler(**kwargs)
diff --git a/tracker/test/issueattachment_test.py b/tracker/test/issueattachment_test.py
index 8c65014..9fccba5 100644
--- a/tracker/test/issueattachment_test.py
+++ b/tracker/test/issueattachment_test.py
@@ -10,7 +10,6 @@
import unittest
-from google.appengine.api import images
from google.appengine.ext import testbed
import mox
@@ -18,16 +17,12 @@
from framework import gcs_helpers
from framework import permissions
-from framework import servlet
from proto import tracker_pb2
from services import service_manager
from testing import fake
from testing import testing_helpers
from tracker import attachment_helpers
from tracker import issueattachment
-from tracker import tracker_helpers
-
-from third_party import cloudstorage
class IssueattachmentTest(unittest.TestCase):
@@ -41,9 +36,6 @@
self.testbed.init_urlfetch_stub()
self.attachment_data = ""
- self._old_gcs_open = cloudstorage.open
- cloudstorage.open = fake.gcs_open
-
services = service_manager.Services(
project=fake.ProjectService(),
config=fake.ConfigService(),
@@ -74,7 +66,6 @@
self.mox.UnsetStubs()
self.mox.ResetAll()
self.testbed.deactivate()
- cloudstorage.open = self._old_gcs_open
attachment_helpers.SignAttachmentID = self.orig_sign_attachment_id
def testGatherPageData_NotFound(self):
diff --git a/tracker/test/issueattachmenttext_test.py b/tracker/test/issueattachmenttext_test.py
index 187aa42..f7dda8d 100644
--- a/tracker/test/issueattachmenttext_test.py
+++ b/tracker/test/issueattachmenttext_test.py
@@ -8,18 +8,15 @@
from __future__ import division
from __future__ import absolute_import
-import logging
+import mock
import unittest
-from mock import patch
-from google.appengine.ext import testbed
-
-from third_party import cloudstorage
import ezt
+from google.appengine.ext import testbed
+from google.cloud import storage
import webapp2
-from framework import filecontent
from framework import permissions
from proto import tracker_pb2
from services import service_manager
@@ -85,12 +82,18 @@
services.issue.TestAddAttachment(
self.attach1, self.comment1.id, self.issue.issue_id)
# TODO(jrobbins): add tests for binary content
- self._old_gcs_open = cloudstorage.open
- cloudstorage.open = fake.gcs_open
+
+ self.client = mock.MagicMock()
+ self.bucket = mock.MagicMock()
+ self.blob = mock.MagicMock()
+ self.client.get_bucket = mock.MagicMock(return_value=self.bucket)
+ self.bucket.get_blob = mock.MagicMock(return_value=self.blob)
+ self.blob.download_as_bytes = mock.MagicMock()
+ mock.patch.object(storage, 'Client', return_value=self.client).start()
def tearDown(self):
self.testbed.deactivate()
- cloudstorage.open = self._old_gcs_open
+ mock.patch.stopall()
def testGatherPageData_CommentDeleted(self):
"""If the attachment's comment was deleted, give a 403."""
@@ -155,6 +158,9 @@
self.assertEqual(404, cm.exception.code)
def testGatherPageData_Normal(self):
+ self.blob.download_as_bytes = mock.MagicMock(
+ return_value='/app_default_bucket/pid/attachments/abcdefg')
+
_request, mr = testing_helpers.GetRequestObjects(
project=self.project,
path='/p/proj/issues/attachmentText?id=1&aid=1234',
@@ -175,7 +181,7 @@
self.assertEqual(None, page_data['code_reviews'])
- @patch('framework.filecontent.DecodeFileContents')
+ @mock.patch('framework.filecontent.DecodeFileContents')
def testGatherPageData_HugeFile(self, mock_DecodeFileContents):
_request, mr = testing_helpers.GetRequestObjects(
project=self.project,
diff --git a/tracker/tracker_helpers.py b/tracker/tracker_helpers.py
index c9f9e5a..cd9acfa 100644
--- a/tracker/tracker_helpers.py
+++ b/tracker/tracker_helpers.py
@@ -17,7 +17,7 @@
import logging
import re
import time
-import urllib
+from six.moves import urllib
from google.appengine.api import app_identity
@@ -151,8 +151,10 @@
comment = post_data.get('comment', '')
is_description = bool(post_data.get('description', ''))
status = post_data.get('status', '')
- template_name = urllib.unquote_plus(post_data.get('template_name', ''))
+ template_name = urllib.parse.unquote_plus(post_data.get('template_name', ''))
component_str = post_data.get('components', '')
+ # TODO: switch when convert /p to flask
+ # label_strs = post_data.getlist('label')
label_strs = post_data.getall('label')
if is_description:
@@ -257,6 +259,8 @@
phase_field_val_strs_remove = collections.defaultdict(dict)
for key in post_data.keys():
if key.startswith(_CUSTOM_FIELD_NAME_PREFIX):
+ # TODO: switch when convert /p to flask
+ # val_strs = [v for v in post_data.getlist(key) if v]
val_strs = [v for v in post_data.getall(key) if v]
if val_strs:
try:
@@ -327,6 +331,8 @@
Returns:
a list of attachment ids for kept attachments
"""
+ # TODO: switch when convert /p to flask
+ # kept_attachments = post_data.getlist('keep-attachment')
kept_attachments = post_data.getall('keep-attachment')
return [int(aid) for aid in kept_attachments]
@@ -616,8 +622,10 @@
url = urls.ISSUE_LIST
kwargs['projects'] = ','.join(sorted(project_names))
- param_strings = ['%s=%s' % (k, urllib.quote((u'%s' % v).encode('utf-8')))
- for k, v in kwargs.items()]
+ param_strings = [
+ '%s=%s' % (k, urllib.parse.quote((u'%s' % v).encode('utf-8')))
+ for k, v in kwargs.items()
+ ]
if param_strings:
url += '?' + '&'.join(sorted(param_strings))
if absolute:
diff --git a/tracker/tracker_views.py b/tracker/tracker_views.py
index 0c54555..c2687db 100644
--- a/tracker/tracker_views.py
+++ b/tracker/tracker_views.py
@@ -12,7 +12,7 @@
import logging
import re
import time
-import urllib
+from six.moves import urllib
from google.appengine.api import app_identity
import ezt
@@ -252,9 +252,12 @@
self.thumbnail_url = gcs_helpers.SignUrl(bucket_name,
gcs_object + '-thumbnail')
self.viewurl = (
- gcs_helpers.SignUrl(bucket_name, gcs_object) + '&' + urllib.urlencode(
- {'response-content-displacement':
- ('attachment; filename=%s' % self.filename)}))
+ gcs_helpers.SignUrl(bucket_name, gcs_object) + '&' +
+ urllib.parse.urlencode(
+ {
+ 'response-content-displacement':
+ ('attachment; filename=%s' % self.filename)
+ }))
class AttachmentView(template_helpers.PBProxy):
diff --git a/tracker/webcomponentspage.py b/tracker/webcomponentspage.py
index 4e2ad0d..eadd983 100644
--- a/tracker/webcomponentspage.py
+++ b/tracker/webcomponentspage.py
@@ -16,6 +16,7 @@
import logging
import settings
+from framework import flaskservlet
from framework import servlet
from framework import framework_helpers
from framework import permissions
@@ -60,6 +61,18 @@
'old_ui_url': old_ui_url,
}
+ # def GetWebComponentsIssueDetail(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def GetWebComponentsIssueList(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def GetWebComponentsIssueWizard(self, **kwargs):
+ # return self.handler(**kwargs)
+
+ # def GetWebComponentsIssueNewEntry(self, **kwargs):
+ # return self.handler(**kwargs)
+
class ProjectListPage(WebComponentsPage):