From 6bbbf7ce1f2444c035d3571728942370f892d8ac Mon Sep 17 00:00:00 2001 From: Agustin Mendez Date: Thu, 13 May 2021 12:38:24 -0300 Subject: [PATCH 1/2] wip --- .gitignore | 4 +- .mocharc.yml | 8 + Dockerfile | 1 + metrics.txt | 807 +++++++++++++++++ package-lock.json | 1119 ++++++++++++++++++++++++ package.json | 4 + src/components.ts | 5 +- src/controllers/handlers.ts | 6 +- src/index.ts | 8 +- src/modules/api/component.ts | 26 +- src/modules/api/utils.ts | 6 +- src/modules/map/component.ts | 37 +- src/ports/fetch.ts | 10 + src/service.ts | 15 +- src/types.ts | 7 +- test/harness/index.js | 5 + test/harness/test-runner.ts | 70 ++ test/harness/testFetchComponent.ts | 60 ++ test/integration/wait-for-sync.spec.ts | 30 + test/tsconfig.json | 18 + test/unit/example.spec.ts | 8 + 21 files changed, 2216 insertions(+), 38 deletions(-) create mode 100644 .mocharc.yml create mode 100644 metrics.txt create mode 100644 src/ports/fetch.ts create mode 100644 test/harness/index.js create mode 100644 test/harness/test-runner.ts create mode 100644 test/harness/testFetchComponent.ts create mode 100644 test/integration/wait-for-sync.spec.ts create mode 100644 test/tsconfig.json create mode 100644 test/unit/example.spec.ts diff --git a/.gitignore b/.gitignore index e4ebf5f..b3c889f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules src/data dist -.env \ No newline at end of file +.env + +**/.DS_Store \ No newline at end of file diff --git a/.mocharc.yml b/.mocharc.yml new file mode 100644 index 0000000..85f54d8 --- /dev/null +++ b/.mocharc.yml @@ -0,0 +1,8 @@ +require: + - 'test/harness/index' +reporter: + - 'spec' +watch-files: + - 'dist/**/*.js' + - 'test/**/*.ts' +spec: 'test/**/*.spec.ts' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index ce88885..4c03f8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN npm ci COPY . /app RUN npm run build +RUN npm run test FROM node:12 diff --git a/metrics.txt b/metrics.txt new file mode 100644 index 0000000..2f16f75 --- /dev/null +++ b/metrics.txt @@ -0,0 +1,807 @@ + +http_request_duration_seconds_count{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 +http_request_duration_seconds_count{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 +http_request_duration_seconds_count{method="DELETE",handler="/v1/projects/:id",code="200"} 76 +http_request_duration_seconds_count{method="GET",handler="*",code="404"} 24 +http_request_duration_seconds_count{method="GET",handler="/v1/analytics/weekly",code="200"} 183 +http_request_duration_seconds_count{method="GET",handler="/v1/analytics/weekly",code="304"} 22 +http_request_duration_seconds_count{method="GET",handler="/v1/assetPacks",code="200"} 10943 +http_request_duration_seconds_count{method="GET",handler="/v1/assetPacks",code="304"} 1868 +http_request_duration_seconds_count{method="GET",handler="/v1/collections",code="200"} 668 +http_request_duration_seconds_count{method="GET",handler="/v1/collections",code="304"} 976 +http_request_duration_seconds_count{method="GET",handler="/v1/info",code="200"} 5208 +http_request_duration_seconds_count{method="GET",handler="/v1/items",code="200"} 679 +http_request_duration_seconds_count{method="GET",handler="/v1/items",code="304"} 965 +http_request_duration_seconds_count{method="GET",handler="/v1/pools",code="200"} 3051 +http_request_duration_seconds_count{method="GET",handler="/v1/pools",code="304"} 2528 +http_request_duration_seconds_count{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 +http_request_duration_seconds_count{method="GET",handler="/v1/pools/:id/manifest",code="304"} 17 +http_request_duration_seconds_count{method="GET",handler="/v1/pools/groups",code="200"} 3349 +http_request_duration_seconds_count{method="GET",handler="/v1/pools/groups",code="304"} 1555 +http_request_duration_seconds_count{method="GET",handler="/v1/projects",code="200"} 962 +http_request_duration_seconds_count{method="GET",handler="/v1/projects",code="304"} 683 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/manifest",code="304"} 44 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 49106 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/pool",code="304"} 56 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/public",code="200"} 29 +http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/public",code="304"} 23 +http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 +http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 +http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 +http_request_duration_seconds_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 8556 +http_request_duration_seconds_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 +http_request_duration_seconds_count{method="GET",handler="/v1/storage/contents/:filename",code="200"} 398464 +http_request_duration_seconds_count{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 +http_request_duration_seconds_count{method="OPTIONS",handler="*",code="404"} 21 +http_request_duration_seconds_count{method="OPTIONS",handler="/v1*",code="200"} 30170 +http_request_duration_seconds_count{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 +http_request_duration_seconds_count{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 +http_request_duration_seconds_count{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 +http_request_duration_seconds_count{method="POST",handler="/v1/projects/:id/media",code="404"} 4 +http_request_duration_seconds_count{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 +http_request_duration_seconds_count{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 +http_request_duration_seconds_count{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 +http_request_duration_seconds_count{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 +http_request_duration_seconds_sum{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 2.257764941 +http_request_duration_seconds_sum{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.15881479199999998 +http_request_duration_seconds_sum{method="DELETE",handler="/v1/projects/:id",code="200"} 6.477772435999998 +http_request_duration_seconds_sum{method="GET",handler="*",code="404"} 0.023330365999999998 +http_request_duration_seconds_sum{method="GET",handler="/v1/analytics/weekly",code="200"} 14.044055317999995 +http_request_duration_seconds_sum{method="GET",handler="/v1/analytics/weekly",code="304"} 1.9016740400000003 +http_request_duration_seconds_sum{method="GET",handler="/v1/assetPacks",code="200"} 1503.3652633430036 +http_request_duration_seconds_sum{method="GET",handler="/v1/assetPacks",code="304"} 197.27064324 +http_request_duration_seconds_sum{method="GET",handler="/v1/collections",code="200"} 59.287604754999954 +http_request_duration_seconds_sum{method="GET",handler="/v1/collections",code="304"} 87.50567923399996 +http_request_duration_seconds_sum{method="GET",handler="/v1/info",code="200"} 2.883710490999996 +http_request_duration_seconds_sum{method="GET",handler="/v1/items",code="200"} 65.34759525100003 +http_request_duration_seconds_sum{method="GET",handler="/v1/items",code="304"} 87.25078935900008 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools",code="200"} 51.44501936800005 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools",code="304"} 102.42539171799973 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools/:id/manifest",code="200"} 86.11470549500002 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools/:id/manifest",code="304"} 1.813319651 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools/groups",code="200"} 8.840164098 +http_request_duration_seconds_sum{method="GET",handler="/v1/pools/groups",code="304"} 3.289221510000004 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects",code="200"} 87.09143438500007 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects",code="304"} 61.67367909500002 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/manifest",code="200"} 82.13213406200002 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/manifest",code="304"} 7.290113569000002 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 4179.448034114006 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 3100.2945306899815 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/pool",code="200"} 23.069323722000025 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/pool",code="304"} 1.2015536359999996 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/public",code="200"} 0.15073243799999997 +http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/public",code="304"} 0.07207285599999999 +http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.18564115699999997 +http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.27382719199999994 +http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 615.1817463169991 +http_request_duration_seconds_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.5433757909999999 +http_request_duration_seconds_sum{method="GET",handler="/v1/storage/contents/:filename",code="200"} 75716.88946975626 +http_request_duration_seconds_sum{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.025597661999999997 +http_request_duration_seconds_sum{method="OPTIONS",handler="*",code="404"} 0.020700311000000006 +http_request_duration_seconds_sum{method="OPTIONS",handler="/v1*",code="200"} 13.916941602000085 +http_request_duration_seconds_sum{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 123.84343722300004 +http_request_duration_seconds_sum{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 20.035523643999998 +http_request_duration_seconds_sum{method="POST",handler="/v1/projects/:id/media",code="200"} 2133.7872695369997 +http_request_duration_seconds_sum{method="POST",handler="/v1/projects/:id/media",code="404"} 0.41866140799999996 +http_request_duration_seconds_sum{method="PUT",handler="/v1/assetPacks/:id",code="200"} 39.301688107999986 +http_request_duration_seconds_sum{method="PUT",handler="/v1/pools/:id/likes",code="200"} 2.044811262 +http_request_duration_seconds_sum{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 2456.1195218219905 +http_request_duration_seconds_sum{method="PUT",handler="/v1/projects/:id/pool",code="200"} 23.348202272999995 +http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.057541021 +http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.064339458 +http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/projects/:id",code="200"} 0.050911060300000005 +http_request_duration_seconds{quantile="0.01",method="GET",handler="*",code="404"} 0.000401871 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="200"} 0.026102943899999998 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="304"} 0.027709919 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/assetPacks",code="200"} 0.02602608812 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/assetPacks",code="304"} 0.01538832198 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/collections",code="200"} 0.05575988124 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/collections",code="304"} 0.05690035432 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/info",code="200"} 0.00034528306666666665 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/items",code="200"} 0.056423081470000004 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/items",code="304"} 0.05557471195 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools",code="200"} 0.005159932910000001 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools",code="304"} 0.00519179564 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.02850121348 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.045684611 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/groups",code="200"} 0.00083892554 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/groups",code="304"} 0.00085669175 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects",code="200"} 0.04454943588 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects",code="304"} 0.04294158223 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.08713696768 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.095026198 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.02332339989330075 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.01617071265626298 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.0013010011 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.00120373304 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="200"} 0.001925028 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="304"} 0.001834542 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.001399823 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0004294184 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.02228574192 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.024351258 +http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.023325255366611317 +http_request_duration_seconds{quantile="0.01",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.000337719 +http_request_duration_seconds{quantile="0.01",method="OPTIONS",handler="*",code="404"} 0.00030317 +http_request_duration_seconds{quantile="0.01",method="OPTIONS",handler="/v1*",code="200"} 0.00028139442549019605 +http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.12209581218 +http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.10201954399999999 +http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="200"} 0.11898556771749999 +http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="404"} 0.056083806 +http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.0527620481 +http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.04680879 +http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.0943213941948 +http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.0763440648 +http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.05887635325 +http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.064339458 +http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/projects/:id",code="200"} 0.053387906400000004 +http_request_duration_seconds{quantile="0.05",method="GET",handler="*",code="404"} 0.0004193402 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="200"} 0.02873109355 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="304"} 0.0324395408 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/assetPacks",code="200"} 0.02646583993842857 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/assetPacks",code="304"} 0.015568544933333333 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/collections",code="200"} 0.059555272799999996 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/collections",code="304"} 0.059461634900000004 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/info",code="200"} 0.00037931636666666663 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/items",code="200"} 0.06004142785 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/items",code="304"} 0.058975662 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools",code="200"} 0.005313554340625 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools",code="304"} 0.005438798833333334 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.0423564565 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.047925792950000004 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/groups",code="200"} 0.0009739056475757575 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/groups",code="304"} 0.0010445036874999999 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects",code="200"} 0.0519650828 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects",code="304"} 0.04872533945 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.0999374864 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.1032752739 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.028046419050701717 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.018474346276032252 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.0014897191 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.0013991275 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="200"} 0.0019563267 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="304"} 0.0019323566 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.0015469437 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0005506795 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.028471918855757578 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.025442835700000003 +http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.03346577327051926 +http_request_duration_seconds{quantile="0.05",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0003420072 +http_request_duration_seconds{quantile="0.05",method="OPTIONS",handler="*",code="404"} 0.00042072535000000006 +http_request_duration_seconds{quantile="0.05",method="OPTIONS",handler="/v1*",code="200"} 0.0003026874729588015 +http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.14378097085 +http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.11787714 +http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="200"} 0.14216602019388885 +http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="404"} 0.056083806 +http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.06367271904999999 +http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.0488823705 +http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.10771670659266624 +http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.0837454265 +http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.072841834 +http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.07940739599999999 +http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/projects/:id",code="200"} 0.0768313735 +http_request_duration_seconds{quantile="0.5",method="GET",handler="*",code="404"} 0.001056815 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="200"} 0.067013775 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="304"} 0.07611149049999999 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/assetPacks",code="200"} 0.03680200451174877 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/assetPacks",code="304"} 0.0686122487217262 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/collections",code="200"} 0.07609369093333333 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/collections",code="304"} 0.07359877296296297 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/info",code="200"} 0.0004886862268372906 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/items",code="200"} 0.07562363272121211 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/items",code="304"} 0.07510506330864197 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools",code="200"} 0.006207566954935065 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools",code="304"} 0.007890703319444446 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.0853434908791209 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.066057267 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/groups",code="200"} 0.0014455134886363638 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/groups",code="304"} 0.0014199504428571428 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects",code="200"} 0.07357458882142857 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects",code="304"} 0.07170904836666667 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.15038184500000001 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.144329883 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.067149368609022 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.04211156141850614 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.002051422457142857 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.002091038 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="200"} 0.002576384 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="304"} 0.002481929 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.003008078 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0026574594999999998 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.05981858696692972 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.0418421605 +http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.11775521057128736 +http_request_duration_seconds{quantile="0.5",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.000573015 +http_request_duration_seconds{quantile="0.5",method="OPTIONS",handler="*",code="404"} 0.001019949 +http_request_duration_seconds{quantile="0.5",method="OPTIONS",handler="/v1*",code="200"} 0.00044028789627024436 +http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.303445302 +http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.17629706299999998 +http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="200"} 0.27396894138971345 +http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="404"} 0.1148005205 +http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.096808511625 +http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.071884883 +http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.15049510969489469 +http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.117720837 +http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.114640966 +http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 +http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/projects/:id",code="200"} 0.10717931 +http_request_duration_seconds{quantile="0.9",method="GET",handler="*",code="404"} 0.0012859958000000006 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="200"} 0.09607061920000001 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="304"} 0.10862485960000005 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/assetPacks",code="200"} 0.38948320782604234 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/assetPacks",code="304"} 0.29172558273086424 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/collections",code="200"} 0.11249195993333334 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/collections",code="304"} 0.11547707238799998 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/info",code="200"} 0.0006962946238095236 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/items",code="200"} 0.12033795536000001 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/items",code="304"} 0.1116053373125 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools",code="200"} 0.05734365014920638 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools",code="304"} 0.09200451410548499 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.2315480873200001 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.2664258156 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/groups",code="200"} 0.0034556033642232265 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/groups",code="304"} 0.0023584146666666664 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects",code="200"} 0.12197815915000003 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects",code="304"} 0.11990791100000006 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.3731310366666667 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.23277275750000007 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.12963662069363563 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.07865367085008121 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.07045996927555558 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.0809857697 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="200"} 0.004253231800000002 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="304"} 0.0041048208 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.005942306600000002 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0030696861999999995 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.11131113669037326 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.06677153470000001 +http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.4385227186961661 +http_request_duration_seconds{quantile="0.9",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0026977651 +http_request_duration_seconds{quantile="0.9",method="OPTIONS",handler="*",code="404"} 0.0012428648000000003 +http_request_duration_seconds{quantile="0.9",method="OPTIONS",handler="/v1*",code="200"} 0.0005300801998739656 +http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.6893893548000003 +http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.30356730649999997 +http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="200"} 0.5720431759182402 +http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 +http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.15572172280000002 +http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.116217579 +http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.21921684592738033 +http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.211100133 +http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.20027649549999998 +http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 +http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/projects/:id",code="200"} 0.13770721570000002 +http_request_duration_seconds{quantile="0.95",method="GET",handler="*",code="404"} 0.0015955451 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="200"} 0.11401556454999992 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="304"} 0.2388125187999997 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/assetPacks",code="200"} 0.5285832040019104 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/assetPacks",code="304"} 0.33174994931538454 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/collections",code="200"} 0.14594295703333338 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/collections",code="304"} 0.14970328843999997 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/info",code="200"} 0.0007519557789473683 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/items",code="200"} 0.18220275524999996 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/items",code="304"} 0.15047443848214287 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools",code="200"} 0.0808180663219008 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools",code="304"} 0.11198081826214286 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.3174938996000001 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.3083957642499999 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/groups",code="200"} 0.005878167515896103 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/groups",code="304"} 0.00475309573 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects",code="200"} 0.16171576724761902 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects",code="304"} 0.15899964241250017 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.4309467188 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.3492525932999996 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.16179165479597896 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.10442234955927553 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.09135744454047612 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.09596443189999998 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="200"} 0.01126794444999982 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="304"} 0.007519423049999981 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.012579274599999997 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0038299595999999984 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.14203517595772056 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.07695464409999998 +http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.5244177990630173 +http_request_duration_seconds{quantile="0.95",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0031263503999999984 +http_request_duration_seconds{quantile="0.95",method="OPTIONS",handler="*",code="404"} 0.0013305977 +http_request_duration_seconds{quantile="0.95",method="OPTIONS",handler="/v1*",code="200"} 0.000601427407931983 +http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.8114317014500001 +http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.385358175 +http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="200"} 0.7441112980368746 +http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 +http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.23770426414999987 +http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.15520296625000002 +http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.2774303669118594 +http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.278661302 +http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.352170844 +http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 +http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/projects/:id",code="200"} 0.32533052377999894 +http_request_duration_seconds{quantile="0.99",method="GET",handler="*",code="404"} 0.001599358 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="200"} 0.6321714559599951 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="304"} 0.362162191 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/assetPacks",code="200"} 0.9696753137525791 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/assetPacks",code="304"} 0.4061739469803635 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/collections",code="200"} 0.39849343754666816 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/collections",code="304"} 0.40283900912400017 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/info",code="200"} 0.0017205872395238105 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/items",code="200"} 0.5379986453300021 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/items",code="304"} 0.3660471996375002 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools",code="200"} 0.14124357408988045 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools",code="304"} 0.24125478731466513 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.45538376226666677 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.321692427 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/groups",code="200"} 0.02359258745909484 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/groups",code="304"} 0.013187883240476244 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects",code="200"} 0.34144837871 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects",code="304"} 0.5839481725674998 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.665165751919999 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.458676408 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.3169391509416474 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.24115492680252043 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.2860652163426665 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.13581624613999993 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="200"} 0.071458718 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="304"} 0.013540375 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.024698571 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.007712182760000038 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.30036832401951563 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.078651829 +http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.721619580707338 +http_request_duration_seconds{quantile="0.99",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.003660882 +http_request_duration_seconds{quantile="0.99",method="OPTIONS",handler="*",code="404"} 0.0013846 +http_request_duration_seconds{quantile="0.99",method="OPTIONS",handler="/v1*",code="200"} 0.0012652100387535294 +http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 1.16974557292 +http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.5142923175 +http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="200"} 1.1234956016205282 +http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 +http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/assetPacks/:id",code="200"} 1.1262514103400005 +http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.215633275 +http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.658576966291445 +http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.4692849455499996 +http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.352170844 +http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 +http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/projects/:id",code="200"} 0.3770358 +http_request_duration_seconds{quantile="0.999",method="GET",handler="*",code="404"} 0.001599358 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="200"} 0.793727176 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="304"} 0.362162191 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/assetPacks",code="200"} 2.211828022985637 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/assetPacks",code="304"} 1.3156385772280301 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/collections",code="200"} 0.5855569902799991 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/collections",code="304"} 1.0270274487320001 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/info",code="200"} 0.007677150415300281 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/items",code="200"} 1.1185179720520007 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/items",code="304"} 1.430027353839988 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools",code="200"} 0.6009618445959055 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools",code="304"} 0.8778017219320287 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="200"} 1.074614504402992 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.321692427 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/groups",code="200"} 0.24313999311778903 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/groups",code="304"} 0.10809072308416472 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects",code="200"} 1.4522578812360027 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects",code="304"} 1.0665000756079999 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="200"} 1.158266029 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.458676408 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 9.00867208862418 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 1.7393365097599234 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="200"} 2.345513010684 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.137725016 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="200"} 0.071458718 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="304"} 0.013540375 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.024698571 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.012319297 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.8447661561748758 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.078651829 +http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/contents/:filename",code="200"} 1.800869470878301 +http_request_duration_seconds{quantile="0.999",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.003660882 +http_request_duration_seconds{quantile="0.999",method="OPTIONS",handler="*",code="404"} 0.0013846 +http_request_duration_seconds{quantile="0.999",method="OPTIONS",handler="/v1*",code="200"} 0.005039693447814655 +http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 2.736775282 +http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.533269043 +http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="200"} 1.5683987306401352 +http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 +http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/assetPacks/:id",code="200"} 1.9164836809999999 +http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.215633275 +http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 1.4027093029277968 +http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/projects/:id/pool",code="200"} 1.170895537 +http_request_size_bytes_count{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 +http_request_size_bytes_count{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 +http_request_size_bytes_count{method="DELETE",handler="/v1/projects/:id",code="200"} 76 +http_request_size_bytes_count{method="GET",handler="/v1/analytics/weekly",code="200"} 183 +http_request_size_bytes_count{method="GET",handler="/v1/assetPacks",code="200"} 10943 +http_request_size_bytes_count{method="GET",handler="/v1/collections",code="200"} 668 +http_request_size_bytes_count{method="GET",handler="/v1/info",code="200"} 5208 +http_request_size_bytes_count{method="GET",handler="/v1/items",code="200"} 679 +http_request_size_bytes_count{method="GET",handler="/v1/pools",code="200"} 3051 +http_request_size_bytes_count{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 +http_request_size_bytes_count{method="GET",handler="/v1/pools/groups",code="200"} 3349 +http_request_size_bytes_count{method="GET",handler="/v1/projects",code="200"} 962 +http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 +http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 +http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 +http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/public",code="200"} 29 +http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 +http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 +http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 +http_request_size_bytes_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 +http_request_size_bytes_count{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 +http_request_size_bytes_count{method="OPTIONS",handler="/v1*",code="200"} 30170 +http_request_size_bytes_count{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 +http_request_size_bytes_count{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 +http_request_size_bytes_count{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 +http_request_size_bytes_count{method="POST",handler="/v1/projects/:id/media",code="404"} 4 +http_request_size_bytes_count{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 +http_request_size_bytes_count{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 +http_request_size_bytes_count{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 +http_request_size_bytes_count{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 +http_request_size_bytes_sum{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 575 +http_request_size_bytes_sum{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 41 +http_request_size_bytes_sum{method="DELETE",handler="/v1/projects/:id",code="200"} 1748 +http_request_size_bytes_sum{method="GET",handler="/v1/analytics/weekly",code="200"} 20922 +http_request_size_bytes_sum{method="GET",handler="/v1/assetPacks",code="200"} 19966102861 +http_request_size_bytes_sum{method="GET",handler="/v1/collections",code="200"} 14028 +http_request_size_bytes_sum{method="GET",handler="/v1/info",code="200"} 203112 +http_request_size_bytes_sum{method="GET",handler="/v1/items",code="200"} 2544213 +http_request_size_bytes_sum{method="GET",handler="/v1/pools",code="200"} 33595323 +http_request_size_bytes_sum{method="GET",handler="/v1/pools/:id/manifest",code="200"} 89214705 +http_request_size_bytes_sum{method="GET",handler="/v1/pools/groups",code="200"} 1574030 +http_request_size_bytes_sum{method="GET",handler="/v1/projects",code="200"} 1570156 +http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/manifest",code="200"} 19025700 +http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 8246548 +http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/pool",code="200"} 447584 +http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/public",code="200"} 14191 +http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 32826 +http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 25986 +http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 228 +http_request_size_bytes_sum{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 2442 +http_request_size_bytes_sum{method="OPTIONS",handler="/v1*",code="200"} 379684 +http_request_size_bytes_sum{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 3509 +http_request_size_bytes_sum{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 2300 +http_request_size_bytes_sum{method="POST",handler="/v1/projects/:id/media",code="200"} 146671 +http_request_size_bytes_sum{method="POST",handler="/v1/projects/:id/media",code="404"} 356 +http_request_size_bytes_sum{method="PUT",handler="/v1/assetPacks/:id",code="200"} 70328 +http_request_size_bytes_sum{method="PUT",handler="/v1/pools/:id/likes",code="200"} 520 +http_request_size_bytes_sum{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 6043181 +http_request_size_bytes_sum{method="PUT",handler="/v1/projects/:id/pool",code="200"} 15840 +http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20 +http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="200"} 23 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/assetPacks",code="200"} 1823587 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools",code="200"} 10584.093333333334 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="200"} 4783.21 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects",code="200"} 41 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="200"} 2230.28 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 119.34121193030157 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="200"} 445.494 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="200"} 475 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 667 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.01",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 78 +http_request_size_bytes{quantile="0.01",method="OPTIONS",handler="/v1*",code="200"} 4 +http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/assetPacks/:id",code="200"} 218.285 +http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20 +http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 401.2618884120172 +http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20 +http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="200"} 23 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/assetPacks",code="200"} 1823587 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools",code="200"} 10951.162913907285 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="200"} 12573.73333333333 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects",code="200"} 41 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="200"} 3464.4 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 120.7083144055573 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="200"} 456.275 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="200"} 476.9 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 672.55 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108.05882352941177 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.05",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 79.71428571428571 +http_request_size_bytes{quantile="0.05",method="OPTIONS",handler="/v1*",code="200"} 4 +http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/assetPacks/:id",code="200"} 224.3857142857143 +http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20 +http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 404.6524844720497 +http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20.5 +http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="200"} 144.7076923076923 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/assetPacks",code="200"} 1823620.394267274 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools",code="200"} 11021.821947994711 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="200"} 58019.30158730158 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects",code="200"} 508.125 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="200"} 31320.166666666668 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 136.01032492165595 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="200"} 502.93037974683546 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="200"} 484.14285714285717 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 688.5 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 208.34782608695653 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.5",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108 +http_request_size_bytes{quantile="0.5",method="OPTIONS",handler="/v1*",code="200"} 11.992929530992223 +http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/assetPacks/:id",code="200"} 229.7 +http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20.8 +http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 415.2830188679245 +http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="200"} 333.6 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/assetPacks",code="200"} 1824319.7884620694 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools",code="200"} 11043.985188431201 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="200"} 228666.2000000002 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects",code="200"} 4054.000000000007 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="200"} 107958.40000000002 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.6103777008082 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="200"} 523.7229357798166 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="200"} 510.56 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 749.8000000000001 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.9",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 188.45714285714286 +http_request_size_bytes{quantile="0.9",method="OPTIONS",handler="/v1*",code="200"} 19 +http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/assetPacks/:id",code="200"} 231.88850574712643 +http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 450.1068322981366 +http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="200"} 340.88 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/assetPacks",code="200"} 1824407.212736419 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools",code="200"} 11092.710810810811 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="200"} 477355.05652173917 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects",code="200"} 7811.457142857143 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="200"} 127120.3999999999 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.81038429820222 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="200"} 524.9600917431193 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="200"} 536.0799999999999 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 773.3 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.95",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 198.5142857142857 +http_request_size_bytes{quantile="0.95",method="OPTIONS",handler="/v1*",code="200"} 19 +http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/assetPacks/:id",code="200"} 232.2825 +http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 462.09294871794873 +http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="200"} 363.01 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/assetPacks",code="200"} 1848288.9094607842 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools",code="200"} 12055.22115384615 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="200"} 658668.6807692308 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects",code="200"} 18861.964999999997 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="200"} 212395.1599999995 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.97038957611744 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="200"} 594.3399999999999 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="200"} 544 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 793 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.99",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 204 +http_request_size_bytes{quantile="0.99",method="OPTIONS",handler="/v1*",code="200"} 19 +http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/assetPacks/:id",code="200"} 232.8965 +http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 506.2984362139917 +http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 +http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/projects/:id",code="200"} 23 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="200"} 367 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/assetPacks",code="200"} 2023197.3931512816 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/collections",code="200"} 21 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/info",code="200"} 39 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/items",code="200"} 3747 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools",code="200"} 12922.889708333336 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="200"} 694028.7113999998 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools/groups",code="200"} 470 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects",code="200"} 34762.61700000005 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="200"} 261487 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 138 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="200"} 671.015 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="200"} 544 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 793 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 +http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 +http_request_size_bytes{quantile="0.999",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 204 +http_request_size_bytes{quantile="0.999",method="OPTIONS",handler="/v1*",code="200"} 19 +http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 +http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 +http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="200"} 23 +http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="404"} 89 +http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/assetPacks/:id",code="200"} 233 +http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 +http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 518.8208947368422 +http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 +http_requests_total{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 +http_requests_total{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 +http_requests_total{method="DELETE",handler="/v1/projects/:id",code="200"} 76 +http_requests_total{method="GET",handler="*",code="404"} 24 +http_requests_total{method="GET",handler="/v1/analytics/weekly",code="200"} 183 +http_requests_total{method="GET",handler="/v1/analytics/weekly",code="304"} 22 +http_requests_total{method="GET",handler="/v1/assetPacks",code="200"} 10943 +http_requests_total{method="GET",handler="/v1/assetPacks",code="304"} 1868 +http_requests_total{method="GET",handler="/v1/collections",code="200"} 668 +http_requests_total{method="GET",handler="/v1/collections",code="304"} 976 +http_requests_total{method="GET",handler="/v1/info",code="200"} 5208 +http_requests_total{method="GET",handler="/v1/items",code="200"} 679 +http_requests_total{method="GET",handler="/v1/items",code="304"} 965 +http_requests_total{method="GET",handler="/v1/pools",code="200"} 3051 +http_requests_total{method="GET",handler="/v1/pools",code="304"} 2528 +http_requests_total{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 +http_requests_total{method="GET",handler="/v1/pools/:id/manifest",code="304"} 17 +http_requests_total{method="GET",handler="/v1/pools/groups",code="200"} 3349 +http_requests_total{method="GET",handler="/v1/pools/groups",code="304"} 1555 +http_requests_total{method="GET",handler="/v1/projects",code="200"} 962 +http_requests_total{method="GET",handler="/v1/projects",code="304"} 683 +http_requests_total{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 +http_requests_total{method="GET",handler="/v1/projects/:id/manifest",code="304"} 44 +http_requests_total{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 49106 +http_requests_total{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 +http_requests_total{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 +http_requests_total{method="GET",handler="/v1/projects/:id/pool",code="304"} 56 +http_requests_total{method="GET",handler="/v1/projects/:id/public",code="200"} 29 +http_requests_total{method="GET",handler="/v1/projects/:id/public",code="304"} 23 +http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 +http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 +http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 +http_requests_total{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 8556 +http_requests_total{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 +http_requests_total{method="GET",handler="/v1/storage/contents/:filename",code="200"} 398464 +http_requests_total{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 +http_requests_total{method="OPTIONS",handler="*",code="404"} 21 +http_requests_total{method="OPTIONS",handler="/v1*",code="200"} 30170 +http_requests_total{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 +http_requests_total{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 +http_requests_total{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 +http_requests_total{method="POST",handler="/v1/projects/:id/media",code="404"} 4 +http_requests_total{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 +http_requests_total{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 +http_requests_total{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 +http_requests_total{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 +nodejs_active_handles_total 6 +nodejs_active_handles{type="Server"} 1 +nodejs_active_handles{type="Socket"} 5 +nodejs_active_requests_total 0 +nodejs_eventloop_lag_max_seconds 0.438042623 +nodejs_eventloop_lag_mean_seconds 0.01020829608574855 +nodejs_eventloop_lag_min_seconds 0.00005568 +nodejs_eventloop_lag_p50_seconds 0.010092543 +nodejs_eventloop_lag_p90_seconds 0.010125311 +nodejs_eventloop_lag_p99_seconds 0.010813439 +nodejs_eventloop_lag_seconds 0.003560554 +nodejs_eventloop_lag_stddev_seconds 0.003126184889962002 +nodejs_external_memory_bytes 1692201 +nodejs_gc_duration_seconds_bucket{le="+Inf",kind="incremental"} 10350 +nodejs_gc_duration_seconds_bucket{le="+Inf",kind="major"} 10350 +nodejs_gc_duration_seconds_bucket{le="+Inf",kind="minor"} 127057 +nodejs_gc_duration_seconds_bucket{le="0.001",kind="incremental"} 10346 +nodejs_gc_duration_seconds_bucket{le="0.001",kind="major"} 0 +nodejs_gc_duration_seconds_bucket{le="0.001",kind="minor"} 69835 +nodejs_gc_duration_seconds_bucket{le="0.01",kind="incremental"} 10346 +nodejs_gc_duration_seconds_bucket{le="0.01",kind="major"} 8199 +nodejs_gc_duration_seconds_bucket{le="0.01",kind="minor"} 126123 +nodejs_gc_duration_seconds_bucket{le="0.1",kind="incremental"} 10350 +nodejs_gc_duration_seconds_bucket{le="0.1",kind="major"} 10350 +nodejs_gc_duration_seconds_bucket{le="0.1",kind="minor"} 127057 +nodejs_gc_duration_seconds_bucket{le="1",kind="incremental"} 10350 +nodejs_gc_duration_seconds_bucket{le="1",kind="major"} 10350 +nodejs_gc_duration_seconds_bucket{le="1",kind="minor"} 127057 +nodejs_gc_duration_seconds_bucket{le="2",kind="incremental"} 10350 +nodejs_gc_duration_seconds_bucket{le="2",kind="major"} 10350 +nodejs_gc_duration_seconds_bucket{le="2",kind="minor"} 127057 +nodejs_gc_duration_seconds_bucket{le="5",kind="incremental"} 10350 +nodejs_gc_duration_seconds_bucket{le="5",kind="major"} 10350 +nodejs_gc_duration_seconds_bucket{le="5",kind="minor"} 127057 +nodejs_gc_duration_seconds_count{kind="incremental"} 10350 +nodejs_gc_duration_seconds_count{kind="major"} 10350 +nodejs_gc_duration_seconds_count{kind="minor"} 127057 +nodejs_gc_duration_seconds_sum{kind="incremental"} 1.2552301599999989 +nodejs_gc_duration_seconds_sum{kind="major"} 85.04404103299997 +nodejs_gc_duration_seconds_sum{kind="minor"} 194.3296368090023 +nodejs_heap_size_total_bytes 79540224 +nodejs_heap_size_used_bytes 41603432 +nodejs_heap_space_size_available_bytes{space="code"} 234048 +nodejs_heap_space_size_available_bytes{space="code_large_object"} 0 +nodejs_heap_space_size_available_bytes{space="large_object"} 0 +nodejs_heap_space_size_available_bytes{space="map"} 859968 +nodejs_heap_space_size_available_bytes{space="new"} 12943792 +nodejs_heap_space_size_available_bytes{space="new_large_object"} 16759296 +nodejs_heap_space_size_available_bytes{space="old"} 6402424 +nodejs_heap_space_size_available_bytes{space="read_only"} 0 +nodejs_heap_space_size_total_bytes{space="code"} 2002944 +nodejs_heap_space_size_total_bytes{space="code_large_object"} 622592 +nodejs_heap_space_size_total_bytes{space="large_object"} 4939776 +nodejs_heap_space_size_total_bytes{space="map"} 2625536 +nodejs_heap_space_size_total_bytes{space="new"} 33554432 +nodejs_heap_space_size_total_bytes{space="new_large_object"} 0 +nodejs_heap_space_size_total_bytes{space="old"} 35532800 +nodejs_heap_space_size_total_bytes{space="read_only"} 262144 +nodejs_heap_space_size_used_bytes{space="code"} 1666176 +nodejs_heap_space_size_used_bytes{space="code_large_object"} 544544 +nodejs_heap_space_size_used_bytes{space="large_object"} 4924536 +nodejs_heap_space_size_used_bytes{space="map"} 1761760 +nodejs_heap_space_size_used_bytes{space="new"} 3815504 +nodejs_heap_space_size_used_bytes{space="new_large_object"} 0 +nodejs_heap_space_size_used_bytes{space="old"} 28861704 +nodejs_heap_space_size_used_bytes{space="read_only"} 32808 +nodejs_version_info{version="v12.22.1",major="12",minor="22",patch="1"} 1 +process_cpu_seconds_total 5294.82443199997 +process_cpu_system_seconds_total 429.8532240000028 +process_cpu_user_seconds_total 4864.971207999993 +process_heap_bytes 235294720 +process_max_fds 4096 +process_open_fds 22 +process_resident_memory_bytes 141737984 +process_start_time_seconds 1619464576 +process_virtual_memory_bytes 412164096 diff --git a/package-lock.json b/package-lock.json index 3b86e48..a482ed5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,132 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.0.5.tgz", + "integrity": "sha512-fUt6b15bjV/VW93UP5opNXJxdwZSbK1EdiwnhN7XrQrcpaOhMJpZ/CjwFpM3THpxwA+YviBUJKSuEqKlCK5alw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", @@ -68,11 +194,41 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz", "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA==" }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" }, + "@types/mocha": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz", + "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", + "dev": true + }, "@types/node": { "version": "14.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz", @@ -106,6 +262,42 @@ "@types/node": "*" } }, + "@types/sinon": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.0.tgz", + "integrity": "sha512-jDZ55oCKxqlDmoTBBbBBEx+N8ZraUVhggMZ9T5t+6/Dh8/4NiOjSUfpLrPiEwxQDlAe3wpAkoXhWvE6LibtsMQ==", + "dev": true, + "requires": { + "@sinonjs/fake-timers": "^7.0.4" + } + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "@well-known-components/env-config-provider": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@well-known-components/env-config-provider/-/env-config-provider-1.1.0.tgz", @@ -191,6 +383,20 @@ "prom-client": "^13.1.0" } }, + "@well-known-components/test-helpers": { + "version": "1.1.0-20210427222307.commit-d92c3ed", + "resolved": "https://registry.npmjs.org/@well-known-components/test-helpers/-/test-helpers-1.1.0-20210427222307.commit-d92c3ed.tgz", + "integrity": "sha512-b62xHYeyqEI0kBeNR3WFSKpyddbHFfBoiyqT/3Smq6ZguBW9EeLRMc0wTaDRfHsm7aMu4kPsX7oQzOU7DGIejg==", + "dev": true, + "requires": { + "@types/mocha": "^8.2.2", + "@types/sinon": "^10.0.0", + "expect": "^26.6.2", + "mocha": "^8.3.2", + "sinon": "^10.0.0", + "ts-node": "^9.1.1" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -205,11 +411,36 @@ "negotiator": "0.6.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -224,6 +455,18 @@ "readable-stream": "^2.0.6" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -239,6 +482,12 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "bintrees": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz", @@ -270,11 +519,38 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, "canvas": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.7.0.tgz", @@ -285,6 +561,32 @@ "simple-get": "^3.0.3" } }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -329,11 +631,71 @@ } } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -423,6 +785,12 @@ "vary": "^1" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -431,6 +799,12 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, "decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", @@ -469,6 +843,18 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -489,16 +875,42 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -536,6 +948,15 @@ "vary": "~1.1.2" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -550,6 +971,22 @@ "unpipe": "~1.0.0" } }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -588,6 +1025,13 @@ "resolved": "https://registry.npmjs.org/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", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -603,6 +1047,12 @@ "wide-align": "^1.1.0" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -616,11 +1066,44 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -673,6 +1156,21 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -681,11 +1179,142 @@ "number-is-nan": "^1.0.0" } }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -701,6 +1330,16 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -762,6 +1401,85 @@ "minimist": "^1.2.5" } }, + "mocha": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -772,6 +1490,12 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, "needle": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", @@ -802,6 +1526,45 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "nise": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", + "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/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", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -833,6 +1596,12 @@ "osenv": "^0.1.4" } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "npm-bundled": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", @@ -917,11 +1686,35 @@ "os-tmpdir": "^1.0.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/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", @@ -932,6 +1725,32 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -959,6 +1778,15 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -986,6 +1814,12 @@ "strip-json-comments": "~2.0.1" } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -1000,6 +1834,21 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -1055,6 +1904,15 @@ } } }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -1096,6 +1954,76 @@ "simple-concat": "^1.0.0" } }, + "sinon": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-10.0.0.tgz", + "integrity": "sha512-XAn5DxtGVJBlBWYrcYKEhWCz7FLwZGdyvANRyK06419hyEpdT0dMc5A8Vcxg5SCGHc40CsqoKsc1bt1CbJPfNw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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 + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -1132,6 +2060,15 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "tar": { "version": "4.4.13", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", @@ -1154,11 +2091,48 @@ "bintrees": "1.0.1" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1198,6 +2172,15 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -1206,15 +2189,151 @@ "string-width": "^1.0.2 || 2" } }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/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 af9a41a..e5ecc7c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "start": "node dist", + "test": "mocha", "build": "tsc" }, "prettier": { @@ -26,5 +27,8 @@ "cli-progress": "^3.9.0", "fp-future": "^1.0.1", "typescript": "^4.2.4" + }, + "devDependencies": { + "@well-known-components/test-helpers": "^1.1.0-20210427222307.commit-d92c3ed" } } diff --git a/src/components.ts b/src/components.ts index bcdbe31..73bab2d 100644 --- a/src/components.ts +++ b/src/components.ts @@ -11,6 +11,7 @@ import { createImageComponent } from './modules/image/component' import { createMapComponent } from './modules/map/component' import { AppComponents, GlobalContext } from './types' import { metricDeclarations } from './metrics' +import { createFetchComponent } from './ports/fetch' export async function initComponents(): Promise { const config = await createDotEnvConfigComponent( @@ -23,7 +24,8 @@ export async function initComponents(): Promise { method: await config.getString('CORS_METHOD'), } - const api = await createApiComponent({ config }) + const fetch = await createFetchComponent() + const api = await createApiComponent({ config, fetch }) const map = await createMapComponent({ config, api }) const logs = createLogComponent() const server = await createServerComponent( @@ -48,5 +50,6 @@ export async function initComponents(): Promise { image, district, statusChecks, + fetch, } } diff --git a/src/controllers/handlers.ts b/src/controllers/handlers.ts index e918ab2..eebe09c 100644 --- a/src/controllers/handlers.ts +++ b/src/controllers/handlers.ts @@ -2,6 +2,7 @@ import { AppComponents } from '../types' import { toLegacyTiles } from '../adapters/legacy-tiles' import { cacheWrapper } from '../logic/cache-wrapper' import { extractParams, getFilterFromUrl } from '../logic/filter-params' +import { isModuleBlock } from 'typescript' export const createTilesRequestHandler = ( components: Pick @@ -34,7 +35,10 @@ export const createLegacyTilesRequestHandler = ( const tiles = await map.getTiles() return { status: 200, - body: { ok: true, data: toLegacyTiles(getFilterFromUrl(context.url, tiles)) }, + body: { + ok: true, + data: toLegacyTiles(getFilterFromUrl(context.url, tiles)), + }, } }, [map.getLastUpdatedAt] diff --git a/src/index.ts b/src/index.ts index 1e8801f..51be60f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ -import { Lifecycle } from "@well-known-components/interfaces" -import { initComponents } from "./components" -import { main } from "./service" +import { Lifecycle } from '@well-known-components/interfaces' +import { initComponents } from './components' +import { main } from './service' // This file is the program entry point, it only calls the Lifecycle function -Lifecycle.programEntryPoint({ main, initComponents }) \ No newline at end of file +Lifecycle.run({ main, initComponents }) diff --git a/src/modules/api/component.ts b/src/modules/api/component.ts index 2bc5655..d54f47d 100644 --- a/src/modules/api/component.ts +++ b/src/modules/api/component.ts @@ -20,6 +20,7 @@ import { buildFromEstates, } from './utils' import { coordsToId, specialTiles } from '../map/utils' +import { AppComponents } from '../../types' const parcelFields = `{ name @@ -62,10 +63,13 @@ const parcelFields = `{ } }` -export async function createApiComponent(components: { - config: IConfigComponent -}): Promise { - const { config } = components +export async function createApiComponent( + components: Pick +): Promise { + const { + config, + fetch: { fetch }, + } = components // config const url = await config.requireString('API_URL') @@ -73,8 +77,12 @@ export async function createApiComponent(components: { const concurrency = await config.requireNumber('API_CONCURRENCY') const imageBaseUrl = await config.requireString('IMAGE_BASE_URL') const externalBaseUrl = await config.requireString('EXTERNAL_BASE_URL') - const landContractAddress = await config.requireString('LAND_CONTRACT_ADDRESS') - const estateContractAddress = await config.requireString('ESTATE_CONTRACT_ADDRESS') + const landContractAddress = await config.requireString( + 'LAND_CONTRACT_ADDRESS' + ) + const estateContractAddress = await config.requireString( + 'ESTATE_CONTRACT_ADDRESS' + ) // events const events = new EventEmitter() @@ -160,6 +168,7 @@ export async function createApiComponent(components: { async function fetchBatch(lastTokenId = '', page = 0) { const { nfts } = await graphql<{ nfts: ParcelFragment[] }>( + fetch, url, `{ nfts( @@ -196,6 +205,7 @@ export async function createApiComponent(components: { parcels: ParcelFragment[] estates: EstateFragment[] }>( + fetch, url, `{ parcels: nfts( @@ -313,8 +323,8 @@ export async function createApiComponent(components: { type: specialTile ? specialTile.type : owner - ? TileType.OWNED - : TileType.UNOWNED, + ? TileType.OWNED + : TileType.UNOWNED, top: specialTile ? specialTile.top : false, left: specialTile ? specialTile.left : false, topLeft: specialTile ? specialTile.topLeft : false, diff --git a/src/modules/api/utils.ts b/src/modules/api/utils.ts index 7e7abdb..f02db4f 100644 --- a/src/modules/api/utils.ts +++ b/src/modules/api/utils.ts @@ -6,10 +6,10 @@ import { Proximity, } from './types' import proximities from './data/proximity.json' -import fetch from 'node-fetch' +import { IFetchComponent } from '@well-known-components/http-server' // helper to do GraphQL queries with retry logic -export async function graphql(url: string, query: string, retries = 5, retryDelay = 500) { +export async function graphql(fetch: IFetchComponent['fetch'], url: string, query: string, retries = 5, retryDelay = 500) { try { const result: { data: T } = await fetch(url, { method: 'post', @@ -30,7 +30,7 @@ export async function graphql(url: string, query: string, retries = 5, retryD setTimeout( () => // reduce retries and duplicate delay time on each attempt - graphql(url, query, retries - 1, retryDelay * 2).then((result) => + graphql(fetch, url, query, retries - 1, retryDelay * 2).then((result) => retry.resolve(result) ).catch(e => retry.reject(e)), retryDelay) diff --git a/src/modules/map/component.ts b/src/modules/map/component.ts index 236154b..e1ad0d3 100644 --- a/src/modules/map/component.ts +++ b/src/modules/map/component.ts @@ -94,21 +94,32 @@ export async function createMapComponent(components: { const lifeCycle: IBaseComponent = { // IBaseComponent.start lifecycle - async start() { + async start(program) { events.emit(MapEvents.INIT) - try { - const result = await api.fetchData() - lastUpdatedAt = result.updatedAt - tiles.resolve(addSpecialTiles(addTiles(result.tiles, {}))) - parcels.resolve(addParcels(result.parcels, {})) - estates.resolve(addEstates(result.estates, {})) - tokens.resolve(addTokens(result.parcels, result.estates, {})) - ready = true - setTimeout(poll, refreshInterval) - events.emit(MapEvents.READY, result) - } catch (error) { - tiles.reject(error) + + async function synchronize() { + try { + const result = await api.fetchData() + lastUpdatedAt = result.updatedAt + tiles.resolve(addSpecialTiles(addTiles(result.tiles, {}))) + parcels.resolve(addParcels(result.parcels, {})) + estates.resolve(addEstates(result.estates, {})) + tokens.resolve(addTokens(result.parcels, result.estates, {})) + ready = true + setTimeout(poll, refreshInterval) + events.emit(MapEvents.READY, result) + } catch (error) { + tiles.reject(error) + } } + + // asynchronously start fetching data, + // that way the server start responding to requests. + // the load balancer should consider the endpoint "not ready" until the + // readinessProbe resolves (isReady: Future) + synchronize().catch((err) => { + /*noop*/ + }) }, } diff --git a/src/ports/fetch.ts b/src/ports/fetch.ts new file mode 100644 index 0000000..81da0ee --- /dev/null +++ b/src/ports/fetch.ts @@ -0,0 +1,10 @@ +import { IFetchComponent } from "@well-known-components/http-server" +import * as nodeFetch from "node-fetch" + +export async function createFetchComponent(): Promise { + return { + async fetch(url: nodeFetch.RequestInfo, init?: nodeFetch.RequestInit): Promise { + return nodeFetch.default(url, init) + }, + } +} diff --git a/src/service.ts b/src/service.ts index 52fcfb2..fe1b7e4 100644 --- a/src/service.ts +++ b/src/service.ts @@ -1,9 +1,13 @@ -import { setupLogs } from "./controllers/logs" -import { setupRouter } from "./controllers/routes" -import { AppComponents, GlobalContext, TestComponents } from "./types" +import { Lifecycle } from '@well-known-components/interfaces' +import { setupLogs } from './controllers/logs' +import { setupRouter } from './controllers/routes' +import { AppComponents, GlobalContext, TestComponents } from './types' // this function wires the business logic (adapters & controllers) with the components (ports) -export async function main(components: AppComponents | TestComponents) { +export async function main( + program: Lifecycle.EntryPointParameters +) { + const { components, startComponents } = program const globalContext: GlobalContext = { components, } @@ -14,4 +18,7 @@ export async function main(components: AppComponents | TestComponents) { components.server.setContext(globalContext) setupLogs(components) + + // start fetching, db connection, http servers + await startComponents() } diff --git a/src/types.ts b/src/types.ts index fab08b5..ccfb027 100644 --- a/src/types.ts +++ b/src/types.ts @@ -9,6 +9,7 @@ import { IMetricsComponent, } from '@well-known-components/interfaces' import { metricDeclarations } from './metrics' +import { IFetchComponent } from '@well-known-components/http-server' export type GlobalContext = { components: BaseComponents @@ -25,12 +26,12 @@ export type BaseComponents = { image: IImageComponent district: IDistrictComponent metrics: IMetricsComponent + fetch: IFetchComponent + statusChecks: {} } // production components -export type AppComponents = BaseComponents & { - statusChecks: {} -} +export type AppComponents = BaseComponents & {} // test environment components export type TestComponents = BaseComponents & {} diff --git a/test/harness/index.js b/test/harness/index.js new file mode 100644 index 0000000..539818e --- /dev/null +++ b/test/harness/index.js @@ -0,0 +1,5 @@ +const { resolve } = require("path") +process.env.TS_NODE_PROJECT = resolve(__dirname, "../tsconfig.json") + +// load ts-node +require("ts-node/register") \ No newline at end of file diff --git a/test/harness/test-runner.ts b/test/harness/test-runner.ts new file mode 100644 index 0000000..06ac380 --- /dev/null +++ b/test/harness/test-runner.ts @@ -0,0 +1,70 @@ +import { main } from '../../src/service' +import { createDotEnvConfigComponent } from '@well-known-components/env-config-provider' +import { + createServerComponent, + createStatusCheckComponent, +} from '@well-known-components/http-server' +import { createLogComponent } from '@well-known-components/logger' + +import { GlobalContext, TestComponents } from '../../src/types' +import { metricDeclarations } from '../../src/metrics' +import { createMetricsComponent } from '@well-known-components/metrics' +import { createRunner } from '@well-known-components/test-helpers' +import { createApiComponent } from '../../src/modules/api/component' +import { createDistrictComponent } from '../../src/modules/district/component' +import { createImageComponent } from '../../src/modules/image/component' +import { createMapComponent } from '../../src/modules/map/component' +import { createTestFetchComponent } from './testFetchComponent' + +let currentPort = 19000 + +// creates a "mocha-like" describe function to run tests using the test components +export const test = createRunner({ + main, + initComponents, +}) + +async function initComponents(): Promise { + const logs = createLogComponent() + + const config = await createDotEnvConfigComponent( + { path: ['.env.defaults', '.env'], debug: true }, + { + HTTP_SERVER_PORT: (currentPort + 1).toString(), + HTTP_SERVER_HOST: '0.0.0.0', + } + ) + + const protocolHostAndProtocol = `http://${await config.requireString( + 'HTTP_SERVER_HOST' + )}:${await config.requireNumber('HTTP_SERVER_PORT')}` + + const server = await createServerComponent( + { logs, config }, + {} + ) + const fetch = await createTestFetchComponent(protocolHostAndProtocol) + + const api = await createApiComponent({ config, fetch }) + const map = await createMapComponent({ config, api }) + const image = createImageComponent({ map }) + const district = createDistrictComponent() + const statusChecks = await createStatusCheckComponent({ server }) + const metrics = await createMetricsComponent(metricDeclarations, { + server, + config, + }) + + return { + logs, + config, + server, + fetch, + metrics, + api, + image, + district, + map, + statusChecks, + } +} diff --git a/test/harness/testFetchComponent.ts b/test/harness/testFetchComponent.ts new file mode 100644 index 0000000..be0e6e7 --- /dev/null +++ b/test/harness/testFetchComponent.ts @@ -0,0 +1,60 @@ +import { IFetchComponent } from '@well-known-components/http-server' +import nodeFetch, { Response, Request } from 'node-fetch' + +const stateSymbol = Symbol('internalState') + +export type FetchInterceptor = ( + req: Request +) => Promise + +export type InternalFetchState = { + interceptors: Array +} + +export function getInternalState(component: any): InternalFetchState { + if (!(stateSymbol in component)) { + throw new Error( + 'the provided IFetchComponent has no test-state. Make sure it was generated using the createTestFetchComponent function' + ) + } + return component[stateSymbol] +} + +export function addInterceptor( + component: IFetchComponent, + interceptor: FetchInterceptor +) { + getInternalState(component).interceptors.push(interceptor) +} + +export function clearInterceptors(component: IFetchComponent) { + getInternalState(component).interceptors.length = 0 +} + +export async function createTestFetchComponent( + serverHostnameAndProtocol: string +): Promise { + const state: InternalFetchState = { + interceptors: [], + } + + const ret = { + async fetch(url, initRequest?) { + if (typeof url == 'string' && url.startsWith('/')) { + return nodeFetch(serverHostnameAndProtocol + url, { ...initRequest }) + } else { + let req: Request = new Request(url, initRequest) + + for (let interceptor of state.interceptors) { + const r = await interceptor(req) + if (r) return r + } + + return nodeFetch(req) + } + }, + [stateSymbol]: state, + } + + return ret +} diff --git a/test/integration/wait-for-sync.spec.ts b/test/integration/wait-for-sync.spec.ts new file mode 100644 index 0000000..6fbd6fe --- /dev/null +++ b/test/integration/wait-for-sync.spec.ts @@ -0,0 +1,30 @@ +import expect from 'expect' +import { test } from '../harness/test-runner' +import { Response } from 'node-fetch' +import { addInterceptor } from '../harness/testFetchComponent' + +test('integration sanity tests using a real server backend', function ({ + components, + stubComponents, +}) { + + it('mocks thegraph api', () => { + const { fetch } = components + addInterceptor(fetch, async (req) => { + if(req.url.startsWith('https://api.thegraph.com')){ + console.dir(req) + return new Response('{"data": {}}') + } + }) + }) + + it('waits for map to be ready', async function () { + this.timeout(60000) + + const { map } = components + const tiles = await map.getTiles() + const tilesAsArray = Object.values(tiles) + + expect(tilesAsArray.length).toBeGreaterThan(0) + }) +}) diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 0000000..39e884e --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2017", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + "types": [ + "node", + "mocha" + ], + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ + "noEmit": true, + "resolveJsonModule": true + } +} \ No newline at end of file diff --git a/test/unit/example.spec.ts b/test/unit/example.spec.ts new file mode 100644 index 0000000..e514e27 --- /dev/null +++ b/test/unit/example.spec.ts @@ -0,0 +1,8 @@ +import { createTestMetricsComponent } from '@well-known-components/metrics' +import expect from 'expect' + +describe('unit', () => { + it('assert true', async () => { + expect(1 == 1).toEqual(true) + }) +}) From 9e5f1e2b6532be0060f85ca7b6582b4668f16713 Mon Sep 17 00:00:00 2001 From: Agustin Mendez Date: Thu, 13 May 2021 12:40:13 -0300 Subject: [PATCH 2/2] remove metrics --- metrics.txt | 807 ---------------------------------------------------- 1 file changed, 807 deletions(-) delete mode 100644 metrics.txt diff --git a/metrics.txt b/metrics.txt deleted file mode 100644 index 2f16f75..0000000 --- a/metrics.txt +++ /dev/null @@ -1,807 +0,0 @@ - -http_request_duration_seconds_count{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 -http_request_duration_seconds_count{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 -http_request_duration_seconds_count{method="DELETE",handler="/v1/projects/:id",code="200"} 76 -http_request_duration_seconds_count{method="GET",handler="*",code="404"} 24 -http_request_duration_seconds_count{method="GET",handler="/v1/analytics/weekly",code="200"} 183 -http_request_duration_seconds_count{method="GET",handler="/v1/analytics/weekly",code="304"} 22 -http_request_duration_seconds_count{method="GET",handler="/v1/assetPacks",code="200"} 10943 -http_request_duration_seconds_count{method="GET",handler="/v1/assetPacks",code="304"} 1868 -http_request_duration_seconds_count{method="GET",handler="/v1/collections",code="200"} 668 -http_request_duration_seconds_count{method="GET",handler="/v1/collections",code="304"} 976 -http_request_duration_seconds_count{method="GET",handler="/v1/info",code="200"} 5208 -http_request_duration_seconds_count{method="GET",handler="/v1/items",code="200"} 679 -http_request_duration_seconds_count{method="GET",handler="/v1/items",code="304"} 965 -http_request_duration_seconds_count{method="GET",handler="/v1/pools",code="200"} 3051 -http_request_duration_seconds_count{method="GET",handler="/v1/pools",code="304"} 2528 -http_request_duration_seconds_count{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 -http_request_duration_seconds_count{method="GET",handler="/v1/pools/:id/manifest",code="304"} 17 -http_request_duration_seconds_count{method="GET",handler="/v1/pools/groups",code="200"} 3349 -http_request_duration_seconds_count{method="GET",handler="/v1/pools/groups",code="304"} 1555 -http_request_duration_seconds_count{method="GET",handler="/v1/projects",code="200"} 962 -http_request_duration_seconds_count{method="GET",handler="/v1/projects",code="304"} 683 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/manifest",code="304"} 44 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 49106 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/pool",code="304"} 56 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/public",code="200"} 29 -http_request_duration_seconds_count{method="GET",handler="/v1/projects/:id/public",code="304"} 23 -http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 -http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 -http_request_duration_seconds_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 -http_request_duration_seconds_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 8556 -http_request_duration_seconds_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 -http_request_duration_seconds_count{method="GET",handler="/v1/storage/contents/:filename",code="200"} 398464 -http_request_duration_seconds_count{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 -http_request_duration_seconds_count{method="OPTIONS",handler="*",code="404"} 21 -http_request_duration_seconds_count{method="OPTIONS",handler="/v1*",code="200"} 30170 -http_request_duration_seconds_count{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 -http_request_duration_seconds_count{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 -http_request_duration_seconds_count{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 -http_request_duration_seconds_count{method="POST",handler="/v1/projects/:id/media",code="404"} 4 -http_request_duration_seconds_count{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 -http_request_duration_seconds_count{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 -http_request_duration_seconds_count{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 -http_request_duration_seconds_count{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 -http_request_duration_seconds_sum{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 2.257764941 -http_request_duration_seconds_sum{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.15881479199999998 -http_request_duration_seconds_sum{method="DELETE",handler="/v1/projects/:id",code="200"} 6.477772435999998 -http_request_duration_seconds_sum{method="GET",handler="*",code="404"} 0.023330365999999998 -http_request_duration_seconds_sum{method="GET",handler="/v1/analytics/weekly",code="200"} 14.044055317999995 -http_request_duration_seconds_sum{method="GET",handler="/v1/analytics/weekly",code="304"} 1.9016740400000003 -http_request_duration_seconds_sum{method="GET",handler="/v1/assetPacks",code="200"} 1503.3652633430036 -http_request_duration_seconds_sum{method="GET",handler="/v1/assetPacks",code="304"} 197.27064324 -http_request_duration_seconds_sum{method="GET",handler="/v1/collections",code="200"} 59.287604754999954 -http_request_duration_seconds_sum{method="GET",handler="/v1/collections",code="304"} 87.50567923399996 -http_request_duration_seconds_sum{method="GET",handler="/v1/info",code="200"} 2.883710490999996 -http_request_duration_seconds_sum{method="GET",handler="/v1/items",code="200"} 65.34759525100003 -http_request_duration_seconds_sum{method="GET",handler="/v1/items",code="304"} 87.25078935900008 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools",code="200"} 51.44501936800005 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools",code="304"} 102.42539171799973 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools/:id/manifest",code="200"} 86.11470549500002 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools/:id/manifest",code="304"} 1.813319651 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools/groups",code="200"} 8.840164098 -http_request_duration_seconds_sum{method="GET",handler="/v1/pools/groups",code="304"} 3.289221510000004 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects",code="200"} 87.09143438500007 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects",code="304"} 61.67367909500002 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/manifest",code="200"} 82.13213406200002 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/manifest",code="304"} 7.290113569000002 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 4179.448034114006 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 3100.2945306899815 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/pool",code="200"} 23.069323722000025 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/pool",code="304"} 1.2015536359999996 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/public",code="200"} 0.15073243799999997 -http_request_duration_seconds_sum{method="GET",handler="/v1/projects/:id/public",code="304"} 0.07207285599999999 -http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.18564115699999997 -http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.27382719199999994 -http_request_duration_seconds_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 615.1817463169991 -http_request_duration_seconds_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.5433757909999999 -http_request_duration_seconds_sum{method="GET",handler="/v1/storage/contents/:filename",code="200"} 75716.88946975626 -http_request_duration_seconds_sum{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.025597661999999997 -http_request_duration_seconds_sum{method="OPTIONS",handler="*",code="404"} 0.020700311000000006 -http_request_duration_seconds_sum{method="OPTIONS",handler="/v1*",code="200"} 13.916941602000085 -http_request_duration_seconds_sum{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 123.84343722300004 -http_request_duration_seconds_sum{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 20.035523643999998 -http_request_duration_seconds_sum{method="POST",handler="/v1/projects/:id/media",code="200"} 2133.7872695369997 -http_request_duration_seconds_sum{method="POST",handler="/v1/projects/:id/media",code="404"} 0.41866140799999996 -http_request_duration_seconds_sum{method="PUT",handler="/v1/assetPacks/:id",code="200"} 39.301688107999986 -http_request_duration_seconds_sum{method="PUT",handler="/v1/pools/:id/likes",code="200"} 2.044811262 -http_request_duration_seconds_sum{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 2456.1195218219905 -http_request_duration_seconds_sum{method="PUT",handler="/v1/projects/:id/pool",code="200"} 23.348202272999995 -http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.057541021 -http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.064339458 -http_request_duration_seconds{quantile="0.01",method="DELETE",handler="/v1/projects/:id",code="200"} 0.050911060300000005 -http_request_duration_seconds{quantile="0.01",method="GET",handler="*",code="404"} 0.000401871 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="200"} 0.026102943899999998 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="304"} 0.027709919 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/assetPacks",code="200"} 0.02602608812 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/assetPacks",code="304"} 0.01538832198 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/collections",code="200"} 0.05575988124 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/collections",code="304"} 0.05690035432 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/info",code="200"} 0.00034528306666666665 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/items",code="200"} 0.056423081470000004 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/items",code="304"} 0.05557471195 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools",code="200"} 0.005159932910000001 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools",code="304"} 0.00519179564 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.02850121348 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.045684611 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/groups",code="200"} 0.00083892554 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/pools/groups",code="304"} 0.00085669175 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects",code="200"} 0.04454943588 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects",code="304"} 0.04294158223 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.08713696768 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.095026198 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.02332339989330075 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.01617071265626298 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.0013010011 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.00120373304 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="200"} 0.001925028 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="304"} 0.001834542 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.001399823 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0004294184 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.02228574192 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.024351258 -http_request_duration_seconds{quantile="0.01",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.023325255366611317 -http_request_duration_seconds{quantile="0.01",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.000337719 -http_request_duration_seconds{quantile="0.01",method="OPTIONS",handler="*",code="404"} 0.00030317 -http_request_duration_seconds{quantile="0.01",method="OPTIONS",handler="/v1*",code="200"} 0.00028139442549019605 -http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.12209581218 -http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.10201954399999999 -http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="200"} 0.11898556771749999 -http_request_duration_seconds{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="404"} 0.056083806 -http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.0527620481 -http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.04680879 -http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.0943213941948 -http_request_duration_seconds{quantile="0.01",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.0763440648 -http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.05887635325 -http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.064339458 -http_request_duration_seconds{quantile="0.05",method="DELETE",handler="/v1/projects/:id",code="200"} 0.053387906400000004 -http_request_duration_seconds{quantile="0.05",method="GET",handler="*",code="404"} 0.0004193402 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="200"} 0.02873109355 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="304"} 0.0324395408 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/assetPacks",code="200"} 0.02646583993842857 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/assetPacks",code="304"} 0.015568544933333333 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/collections",code="200"} 0.059555272799999996 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/collections",code="304"} 0.059461634900000004 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/info",code="200"} 0.00037931636666666663 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/items",code="200"} 0.06004142785 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/items",code="304"} 0.058975662 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools",code="200"} 0.005313554340625 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools",code="304"} 0.005438798833333334 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.0423564565 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.047925792950000004 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/groups",code="200"} 0.0009739056475757575 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/pools/groups",code="304"} 0.0010445036874999999 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects",code="200"} 0.0519650828 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects",code="304"} 0.04872533945 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.0999374864 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.1032752739 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.028046419050701717 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.018474346276032252 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.0014897191 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.0013991275 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="200"} 0.0019563267 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="304"} 0.0019323566 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.0015469437 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0005506795 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.028471918855757578 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.025442835700000003 -http_request_duration_seconds{quantile="0.05",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.03346577327051926 -http_request_duration_seconds{quantile="0.05",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0003420072 -http_request_duration_seconds{quantile="0.05",method="OPTIONS",handler="*",code="404"} 0.00042072535000000006 -http_request_duration_seconds{quantile="0.05",method="OPTIONS",handler="/v1*",code="200"} 0.0003026874729588015 -http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.14378097085 -http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.11787714 -http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="200"} 0.14216602019388885 -http_request_duration_seconds{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="404"} 0.056083806 -http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.06367271904999999 -http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.0488823705 -http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.10771670659266624 -http_request_duration_seconds{quantile="0.05",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.0837454265 -http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.072841834 -http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.07940739599999999 -http_request_duration_seconds{quantile="0.5",method="DELETE",handler="/v1/projects/:id",code="200"} 0.0768313735 -http_request_duration_seconds{quantile="0.5",method="GET",handler="*",code="404"} 0.001056815 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="200"} 0.067013775 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="304"} 0.07611149049999999 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/assetPacks",code="200"} 0.03680200451174877 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/assetPacks",code="304"} 0.0686122487217262 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/collections",code="200"} 0.07609369093333333 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/collections",code="304"} 0.07359877296296297 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/info",code="200"} 0.0004886862268372906 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/items",code="200"} 0.07562363272121211 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/items",code="304"} 0.07510506330864197 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools",code="200"} 0.006207566954935065 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools",code="304"} 0.007890703319444446 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.0853434908791209 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.066057267 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/groups",code="200"} 0.0014455134886363638 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/pools/groups",code="304"} 0.0014199504428571428 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects",code="200"} 0.07357458882142857 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects",code="304"} 0.07170904836666667 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.15038184500000001 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.144329883 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.067149368609022 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.04211156141850614 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.002051422457142857 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.002091038 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="200"} 0.002576384 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="304"} 0.002481929 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.003008078 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0026574594999999998 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.05981858696692972 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.0418421605 -http_request_duration_seconds{quantile="0.5",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.11775521057128736 -http_request_duration_seconds{quantile="0.5",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.000573015 -http_request_duration_seconds{quantile="0.5",method="OPTIONS",handler="*",code="404"} 0.001019949 -http_request_duration_seconds{quantile="0.5",method="OPTIONS",handler="/v1*",code="200"} 0.00044028789627024436 -http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.303445302 -http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.17629706299999998 -http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="200"} 0.27396894138971345 -http_request_duration_seconds{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="404"} 0.1148005205 -http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.096808511625 -http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.071884883 -http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.15049510969489469 -http_request_duration_seconds{quantile="0.5",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.117720837 -http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.114640966 -http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 -http_request_duration_seconds{quantile="0.9",method="DELETE",handler="/v1/projects/:id",code="200"} 0.10717931 -http_request_duration_seconds{quantile="0.9",method="GET",handler="*",code="404"} 0.0012859958000000006 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="200"} 0.09607061920000001 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="304"} 0.10862485960000005 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/assetPacks",code="200"} 0.38948320782604234 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/assetPacks",code="304"} 0.29172558273086424 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/collections",code="200"} 0.11249195993333334 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/collections",code="304"} 0.11547707238799998 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/info",code="200"} 0.0006962946238095236 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/items",code="200"} 0.12033795536000001 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/items",code="304"} 0.1116053373125 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools",code="200"} 0.05734365014920638 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools",code="304"} 0.09200451410548499 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.2315480873200001 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.2664258156 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/groups",code="200"} 0.0034556033642232265 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/pools/groups",code="304"} 0.0023584146666666664 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects",code="200"} 0.12197815915000003 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects",code="304"} 0.11990791100000006 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.3731310366666667 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.23277275750000007 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.12963662069363563 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.07865367085008121 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.07045996927555558 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.0809857697 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="200"} 0.004253231800000002 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="304"} 0.0041048208 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.005942306600000002 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0030696861999999995 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.11131113669037326 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.06677153470000001 -http_request_duration_seconds{quantile="0.9",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.4385227186961661 -http_request_duration_seconds{quantile="0.9",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0026977651 -http_request_duration_seconds{quantile="0.9",method="OPTIONS",handler="*",code="404"} 0.0012428648000000003 -http_request_duration_seconds{quantile="0.9",method="OPTIONS",handler="/v1*",code="200"} 0.0005300801998739656 -http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.6893893548000003 -http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.30356730649999997 -http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="200"} 0.5720431759182402 -http_request_duration_seconds{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 -http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.15572172280000002 -http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.116217579 -http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.21921684592738033 -http_request_duration_seconds{quantile="0.9",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.211100133 -http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.20027649549999998 -http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 -http_request_duration_seconds{quantile="0.95",method="DELETE",handler="/v1/projects/:id",code="200"} 0.13770721570000002 -http_request_duration_seconds{quantile="0.95",method="GET",handler="*",code="404"} 0.0015955451 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="200"} 0.11401556454999992 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="304"} 0.2388125187999997 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/assetPacks",code="200"} 0.5285832040019104 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/assetPacks",code="304"} 0.33174994931538454 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/collections",code="200"} 0.14594295703333338 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/collections",code="304"} 0.14970328843999997 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/info",code="200"} 0.0007519557789473683 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/items",code="200"} 0.18220275524999996 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/items",code="304"} 0.15047443848214287 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools",code="200"} 0.0808180663219008 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools",code="304"} 0.11198081826214286 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.3174938996000001 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.3083957642499999 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/groups",code="200"} 0.005878167515896103 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/pools/groups",code="304"} 0.00475309573 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects",code="200"} 0.16171576724761902 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects",code="304"} 0.15899964241250017 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.4309467188 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.3492525932999996 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.16179165479597896 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.10442234955927553 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.09135744454047612 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.09596443189999998 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="200"} 0.01126794444999982 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="304"} 0.007519423049999981 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.012579274599999997 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0038299595999999984 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.14203517595772056 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.07695464409999998 -http_request_duration_seconds{quantile="0.95",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.5244177990630173 -http_request_duration_seconds{quantile="0.95",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.0031263503999999984 -http_request_duration_seconds{quantile="0.95",method="OPTIONS",handler="*",code="404"} 0.0013305977 -http_request_duration_seconds{quantile="0.95",method="OPTIONS",handler="/v1*",code="200"} 0.000601427407931983 -http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 0.8114317014500001 -http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.385358175 -http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="200"} 0.7441112980368746 -http_request_duration_seconds{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 -http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/assetPacks/:id",code="200"} 0.23770426414999987 -http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.15520296625000002 -http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.2774303669118594 -http_request_duration_seconds{quantile="0.95",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.278661302 -http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.352170844 -http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 -http_request_duration_seconds{quantile="0.99",method="DELETE",handler="/v1/projects/:id",code="200"} 0.32533052377999894 -http_request_duration_seconds{quantile="0.99",method="GET",handler="*",code="404"} 0.001599358 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="200"} 0.6321714559599951 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="304"} 0.362162191 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/assetPacks",code="200"} 0.9696753137525791 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/assetPacks",code="304"} 0.4061739469803635 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/collections",code="200"} 0.39849343754666816 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/collections",code="304"} 0.40283900912400017 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/info",code="200"} 0.0017205872395238105 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/items",code="200"} 0.5379986453300021 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/items",code="304"} 0.3660471996375002 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools",code="200"} 0.14124357408988045 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools",code="304"} 0.24125478731466513 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="200"} 0.45538376226666677 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.321692427 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/groups",code="200"} 0.02359258745909484 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/pools/groups",code="304"} 0.013187883240476244 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects",code="200"} 0.34144837871 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects",code="304"} 0.5839481725674998 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="200"} 0.665165751919999 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.458676408 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 0.3169391509416474 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 0.24115492680252043 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="200"} 0.2860652163426665 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.13581624613999993 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="200"} 0.071458718 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="304"} 0.013540375 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.024698571 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.007712182760000038 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.30036832401951563 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.078651829 -http_request_duration_seconds{quantile="0.99",method="GET",handler="/v1/storage/contents/:filename",code="200"} 0.721619580707338 -http_request_duration_seconds{quantile="0.99",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.003660882 -http_request_duration_seconds{quantile="0.99",method="OPTIONS",handler="*",code="404"} 0.0013846 -http_request_duration_seconds{quantile="0.99",method="OPTIONS",handler="/v1*",code="200"} 0.0012652100387535294 -http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 1.16974557292 -http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.5142923175 -http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="200"} 1.1234956016205282 -http_request_duration_seconds{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 -http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/assetPacks/:id",code="200"} 1.1262514103400005 -http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.215633275 -http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 0.658576966291445 -http_request_duration_seconds{quantile="0.99",method="PUT",handler="/v1/projects/:id/pool",code="200"} 0.4692849455499996 -http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 0.352170844 -http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 0.094475334 -http_request_duration_seconds{quantile="0.999",method="DELETE",handler="/v1/projects/:id",code="200"} 0.3770358 -http_request_duration_seconds{quantile="0.999",method="GET",handler="*",code="404"} 0.001599358 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="200"} 0.793727176 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="304"} 0.362162191 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/assetPacks",code="200"} 2.211828022985637 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/assetPacks",code="304"} 1.3156385772280301 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/collections",code="200"} 0.5855569902799991 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/collections",code="304"} 1.0270274487320001 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/info",code="200"} 0.007677150415300281 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/items",code="200"} 1.1185179720520007 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/items",code="304"} 1.430027353839988 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools",code="200"} 0.6009618445959055 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools",code="304"} 0.8778017219320287 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="200"} 1.074614504402992 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="304"} 0.321692427 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/groups",code="200"} 0.24313999311778903 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/pools/groups",code="304"} 0.10809072308416472 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects",code="200"} 1.4522578812360027 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects",code="304"} 1.0665000756079999 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="200"} 1.158266029 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="304"} 0.458676408 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 9.00867208862418 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 1.7393365097599234 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="200"} 2.345513010684 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="304"} 0.137725016 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="200"} 0.071458718 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="304"} 0.013540375 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 0.024698571 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.012319297 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 0.003637321 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 0.8447661561748758 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 0.078651829 -http_request_duration_seconds{quantile="0.999",method="GET",handler="/v1/storage/contents/:filename",code="200"} 1.800869470878301 -http_request_duration_seconds{quantile="0.999",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 0.003660882 -http_request_duration_seconds{quantile="0.999",method="OPTIONS",handler="*",code="404"} 0.0013846 -http_request_duration_seconds{quantile="0.999",method="OPTIONS",handler="/v1*",code="200"} 0.005039693447814655 -http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 2.736775282 -http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 0.533269043 -http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="200"} 1.5683987306401352 -http_request_duration_seconds{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="404"} 0.132976561 -http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/assetPacks/:id",code="200"} 1.9164836809999999 -http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/pools/:id/likes",code="200"} 0.215633275 -http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 1.4027093029277968 -http_request_duration_seconds{quantile="0.999",method="PUT",handler="/v1/projects/:id/pool",code="200"} 1.170895537 -http_request_size_bytes_count{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 -http_request_size_bytes_count{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 -http_request_size_bytes_count{method="DELETE",handler="/v1/projects/:id",code="200"} 76 -http_request_size_bytes_count{method="GET",handler="/v1/analytics/weekly",code="200"} 183 -http_request_size_bytes_count{method="GET",handler="/v1/assetPacks",code="200"} 10943 -http_request_size_bytes_count{method="GET",handler="/v1/collections",code="200"} 668 -http_request_size_bytes_count{method="GET",handler="/v1/info",code="200"} 5208 -http_request_size_bytes_count{method="GET",handler="/v1/items",code="200"} 679 -http_request_size_bytes_count{method="GET",handler="/v1/pools",code="200"} 3051 -http_request_size_bytes_count{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 -http_request_size_bytes_count{method="GET",handler="/v1/pools/groups",code="200"} 3349 -http_request_size_bytes_count{method="GET",handler="/v1/projects",code="200"} 962 -http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 -http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 -http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 -http_request_size_bytes_count{method="GET",handler="/v1/projects/:id/public",code="200"} 29 -http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 -http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 -http_request_size_bytes_count{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 -http_request_size_bytes_count{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 -http_request_size_bytes_count{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 -http_request_size_bytes_count{method="OPTIONS",handler="/v1*",code="200"} 30170 -http_request_size_bytes_count{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 -http_request_size_bytes_count{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 -http_request_size_bytes_count{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 -http_request_size_bytes_count{method="POST",handler="/v1/projects/:id/media",code="404"} 4 -http_request_size_bytes_count{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 -http_request_size_bytes_count{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 -http_request_size_bytes_count{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 -http_request_size_bytes_count{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 -http_request_size_bytes_sum{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 575 -http_request_size_bytes_sum{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 41 -http_request_size_bytes_sum{method="DELETE",handler="/v1/projects/:id",code="200"} 1748 -http_request_size_bytes_sum{method="GET",handler="/v1/analytics/weekly",code="200"} 20922 -http_request_size_bytes_sum{method="GET",handler="/v1/assetPacks",code="200"} 19966102861 -http_request_size_bytes_sum{method="GET",handler="/v1/collections",code="200"} 14028 -http_request_size_bytes_sum{method="GET",handler="/v1/info",code="200"} 203112 -http_request_size_bytes_sum{method="GET",handler="/v1/items",code="200"} 2544213 -http_request_size_bytes_sum{method="GET",handler="/v1/pools",code="200"} 33595323 -http_request_size_bytes_sum{method="GET",handler="/v1/pools/:id/manifest",code="200"} 89214705 -http_request_size_bytes_sum{method="GET",handler="/v1/pools/groups",code="200"} 1574030 -http_request_size_bytes_sum{method="GET",handler="/v1/projects",code="200"} 1570156 -http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/manifest",code="200"} 19025700 -http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 8246548 -http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/pool",code="200"} 447584 -http_request_size_bytes_sum{method="GET",handler="/v1/projects/:id/public",code="200"} 14191 -http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 32826 -http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 25986 -http_request_size_bytes_sum{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes_sum{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 228 -http_request_size_bytes_sum{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 2442 -http_request_size_bytes_sum{method="OPTIONS",handler="/v1*",code="200"} 379684 -http_request_size_bytes_sum{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 3509 -http_request_size_bytes_sum{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 2300 -http_request_size_bytes_sum{method="POST",handler="/v1/projects/:id/media",code="200"} 146671 -http_request_size_bytes_sum{method="POST",handler="/v1/projects/:id/media",code="404"} 356 -http_request_size_bytes_sum{method="PUT",handler="/v1/assetPacks/:id",code="200"} 70328 -http_request_size_bytes_sum{method="PUT",handler="/v1/pools/:id/likes",code="200"} 520 -http_request_size_bytes_sum{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 6043181 -http_request_size_bytes_sum{method="PUT",handler="/v1/projects/:id/pool",code="200"} 15840 -http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20 -http_request_size_bytes{quantile="0.01",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/analytics/weekly",code="200"} 23 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/assetPacks",code="200"} 1823587 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools",code="200"} 10584.093333333334 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools/:id/manifest",code="200"} 4783.21 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects",code="200"} 41 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/manifest",code="200"} 2230.28 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 119.34121193030157 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/pool",code="200"} 445.494 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/projects/:id/public",code="200"} 475 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 667 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.01",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.01",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 78 -http_request_size_bytes{quantile="0.01",method="OPTIONS",handler="/v1*",code="200"} 4 -http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.01",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/assetPacks/:id",code="200"} 218.285 -http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20 -http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 401.2618884120172 -http_request_size_bytes{quantile="0.01",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20 -http_request_size_bytes{quantile="0.05",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/analytics/weekly",code="200"} 23 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/assetPacks",code="200"} 1823587 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools",code="200"} 10951.162913907285 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools/:id/manifest",code="200"} 12573.73333333333 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects",code="200"} 41 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/manifest",code="200"} 3464.4 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 120.7083144055573 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/pool",code="200"} 456.275 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/projects/:id/public",code="200"} 476.9 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 672.55 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108.05882352941177 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.05",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.05",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 79.71428571428571 -http_request_size_bytes{quantile="0.05",method="OPTIONS",handler="/v1*",code="200"} 4 -http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.05",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/assetPacks/:id",code="200"} 224.3857142857143 -http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20 -http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 404.6524844720497 -http_request_size_bytes{quantile="0.05",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 20.5 -http_request_size_bytes{quantile="0.5",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/analytics/weekly",code="200"} 144.7076923076923 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/assetPacks",code="200"} 1823620.394267274 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools",code="200"} 11021.821947994711 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools/:id/manifest",code="200"} 58019.30158730158 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects",code="200"} 508.125 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/manifest",code="200"} 31320.166666666668 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 136.01032492165595 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/pool",code="200"} 502.93037974683546 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/projects/:id/public",code="200"} 484.14285714285717 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 688.5 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 208.34782608695653 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.5",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.5",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 108 -http_request_size_bytes{quantile="0.5",method="OPTIONS",handler="/v1*",code="200"} 11.992929530992223 -http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.5",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/assetPacks/:id",code="200"} 229.7 -http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/pools/:id/likes",code="200"} 20.8 -http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 415.2830188679245 -http_request_size_bytes{quantile="0.5",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.9",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/analytics/weekly",code="200"} 333.6 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/assetPacks",code="200"} 1824319.7884620694 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools",code="200"} 11043.985188431201 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools/:id/manifest",code="200"} 228666.2000000002 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects",code="200"} 4054.000000000007 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/manifest",code="200"} 107958.40000000002 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.6103777008082 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/pool",code="200"} 523.7229357798166 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/projects/:id/public",code="200"} 510.56 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 749.8000000000001 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.9",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.9",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 188.45714285714286 -http_request_size_bytes{quantile="0.9",method="OPTIONS",handler="/v1*",code="200"} 19 -http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.9",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/assetPacks/:id",code="200"} 231.88850574712643 -http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 450.1068322981366 -http_request_size_bytes{quantile="0.9",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.95",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/analytics/weekly",code="200"} 340.88 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/assetPacks",code="200"} 1824407.212736419 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools",code="200"} 11092.710810810811 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools/:id/manifest",code="200"} 477355.05652173917 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects",code="200"} 7811.457142857143 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/manifest",code="200"} 127120.3999999999 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.81038429820222 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/pool",code="200"} 524.9600917431193 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/projects/:id/public",code="200"} 536.0799999999999 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 773.3 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.95",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.95",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 198.5142857142857 -http_request_size_bytes{quantile="0.95",method="OPTIONS",handler="/v1*",code="200"} 19 -http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.95",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/assetPacks/:id",code="200"} 232.2825 -http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 462.09294871794873 -http_request_size_bytes{quantile="0.95",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.99",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/analytics/weekly",code="200"} 363.01 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/assetPacks",code="200"} 1848288.9094607842 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools",code="200"} 12055.22115384615 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools/:id/manifest",code="200"} 658668.6807692308 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects",code="200"} 18861.964999999997 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/manifest",code="200"} 212395.1599999995 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 137.97038957611744 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/pool",code="200"} 594.3399999999999 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/projects/:id/public",code="200"} 544 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 793 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.99",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.99",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 204 -http_request_size_bytes{quantile="0.99",method="OPTIONS",handler="/v1*",code="200"} 19 -http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.99",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/assetPacks/:id",code="200"} 232.8965 -http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 506.2984362139917 -http_request_size_bytes{quantile="0.99",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/assetPacks/:id",code="200"} 23 -http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.999",method="DELETE",handler="/v1/projects/:id",code="200"} 23 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/analytics/weekly",code="200"} 367 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/assetPacks",code="200"} 2023197.3931512816 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/collections",code="200"} 21 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/info",code="200"} 39 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/items",code="200"} 3747 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools",code="200"} 12922.889708333336 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools/:id/manifest",code="200"} 694028.7113999998 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/pools/groups",code="200"} 470 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects",code="200"} 34762.61700000005 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/manifest",code="200"} 261487 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 138 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/pool",code="200"} 671.015 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/projects/:id/public",code="200"} 544 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 793 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 214 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 9 -http_request_size_bytes{quantile="0.999",method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 19 -http_request_size_bytes{quantile="0.999",method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 204 -http_request_size_bytes{quantile="0.999",method="OPTIONS",handler="/v1*",code="200"} 19 -http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 11 -http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 23 -http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="200"} 23 -http_request_size_bytes{quantile="0.999",method="POST",handler="/v1/projects/:id/media",code="404"} 89 -http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/assetPacks/:id",code="200"} 233 -http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/pools/:id/likes",code="200"} 21 -http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/projects/:id/manifest",code="200"} 518.8208947368422 -http_request_size_bytes{quantile="0.999",method="PUT",handler="/v1/projects/:id/pool",code="200"} 96 -http_requests_total{method="DELETE",handler="/v1/assetPacks/:id",code="200"} 25 -http_requests_total{method="DELETE",handler="/v1/pools/:id/likes",code="200"} 2 -http_requests_total{method="DELETE",handler="/v1/projects/:id",code="200"} 76 -http_requests_total{method="GET",handler="*",code="404"} 24 -http_requests_total{method="GET",handler="/v1/analytics/weekly",code="200"} 183 -http_requests_total{method="GET",handler="/v1/analytics/weekly",code="304"} 22 -http_requests_total{method="GET",handler="/v1/assetPacks",code="200"} 10943 -http_requests_total{method="GET",handler="/v1/assetPacks",code="304"} 1868 -http_requests_total{method="GET",handler="/v1/collections",code="200"} 668 -http_requests_total{method="GET",handler="/v1/collections",code="304"} 976 -http_requests_total{method="GET",handler="/v1/info",code="200"} 5208 -http_requests_total{method="GET",handler="/v1/items",code="200"} 679 -http_requests_total{method="GET",handler="/v1/items",code="304"} 965 -http_requests_total{method="GET",handler="/v1/pools",code="200"} 3051 -http_requests_total{method="GET",handler="/v1/pools",code="304"} 2528 -http_requests_total{method="GET",handler="/v1/pools/:id/manifest",code="200"} 763 -http_requests_total{method="GET",handler="/v1/pools/:id/manifest",code="304"} 17 -http_requests_total{method="GET",handler="/v1/pools/groups",code="200"} 3349 -http_requests_total{method="GET",handler="/v1/pools/groups",code="304"} 1555 -http_requests_total{method="GET",handler="/v1/projects",code="200"} 962 -http_requests_total{method="GET",handler="/v1/projects",code="304"} 683 -http_requests_total{method="GET",handler="/v1/projects/:id/manifest",code="200"} 422 -http_requests_total{method="GET",handler="/v1/projects/:id/manifest",code="304"} 44 -http_requests_total{method="GET",handler="/v1/projects/:id/media/:filename",code="200"} 49106 -http_requests_total{method="GET",handler="/v1/projects/:id/media/:filename",code="404"} 60632 -http_requests_total{method="GET",handler="/v1/projects/:id/pool",code="200"} 899 -http_requests_total{method="GET",handler="/v1/projects/:id/pool",code="304"} 56 -http_requests_total{method="GET",handler="/v1/projects/:id/public",code="200"} 29 -http_requests_total{method="GET",handler="/v1/projects/:id/public",code="304"} 23 -http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="200"} 47 -http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="301"} 132 -http_requests_total{method="GET",handler="/v1/share/:type(scene|pool)/:id",code="404"} 1 -http_requests_total{method="GET",handler="/v1/storage/assetPacks/:filename",code="200"} 8556 -http_requests_total{method="GET",handler="/v1/storage/assetPacks/:filename",code="404"} 12 -http_requests_total{method="GET",handler="/v1/storage/contents/:filename",code="200"} 398464 -http_requests_total{method="HEAD",handler="/v1/share/:type(scene|pool)/:id",code="301"} 22 -http_requests_total{method="OPTIONS",handler="*",code="404"} 21 -http_requests_total{method="OPTIONS",handler="/v1*",code="200"} 30170 -http_requests_total{method="POST",handler="/v1/assetPacks/:assetPackId/assets/:id/files",code="200"} 319 -http_requests_total{method="POST",handler="/v1/assetPacks/:id/thumbnail",code="200"} 100 -http_requests_total{method="POST",handler="/v1/projects/:id/media",code="200"} 6377 -http_requests_total{method="POST",handler="/v1/projects/:id/media",code="404"} 4 -http_requests_total{method="PUT",handler="/v1/assetPacks/:id",code="200"} 307 -http_requests_total{method="PUT",handler="/v1/pools/:id/likes",code="200"} 25 -http_requests_total{method="PUT",handler="/v1/projects/:id/manifest",code="200"} 14301 -http_requests_total{method="PUT",handler="/v1/projects/:id/pool",code="200"} 165 -nodejs_active_handles_total 6 -nodejs_active_handles{type="Server"} 1 -nodejs_active_handles{type="Socket"} 5 -nodejs_active_requests_total 0 -nodejs_eventloop_lag_max_seconds 0.438042623 -nodejs_eventloop_lag_mean_seconds 0.01020829608574855 -nodejs_eventloop_lag_min_seconds 0.00005568 -nodejs_eventloop_lag_p50_seconds 0.010092543 -nodejs_eventloop_lag_p90_seconds 0.010125311 -nodejs_eventloop_lag_p99_seconds 0.010813439 -nodejs_eventloop_lag_seconds 0.003560554 -nodejs_eventloop_lag_stddev_seconds 0.003126184889962002 -nodejs_external_memory_bytes 1692201 -nodejs_gc_duration_seconds_bucket{le="+Inf",kind="incremental"} 10350 -nodejs_gc_duration_seconds_bucket{le="+Inf",kind="major"} 10350 -nodejs_gc_duration_seconds_bucket{le="+Inf",kind="minor"} 127057 -nodejs_gc_duration_seconds_bucket{le="0.001",kind="incremental"} 10346 -nodejs_gc_duration_seconds_bucket{le="0.001",kind="major"} 0 -nodejs_gc_duration_seconds_bucket{le="0.001",kind="minor"} 69835 -nodejs_gc_duration_seconds_bucket{le="0.01",kind="incremental"} 10346 -nodejs_gc_duration_seconds_bucket{le="0.01",kind="major"} 8199 -nodejs_gc_duration_seconds_bucket{le="0.01",kind="minor"} 126123 -nodejs_gc_duration_seconds_bucket{le="0.1",kind="incremental"} 10350 -nodejs_gc_duration_seconds_bucket{le="0.1",kind="major"} 10350 -nodejs_gc_duration_seconds_bucket{le="0.1",kind="minor"} 127057 -nodejs_gc_duration_seconds_bucket{le="1",kind="incremental"} 10350 -nodejs_gc_duration_seconds_bucket{le="1",kind="major"} 10350 -nodejs_gc_duration_seconds_bucket{le="1",kind="minor"} 127057 -nodejs_gc_duration_seconds_bucket{le="2",kind="incremental"} 10350 -nodejs_gc_duration_seconds_bucket{le="2",kind="major"} 10350 -nodejs_gc_duration_seconds_bucket{le="2",kind="minor"} 127057 -nodejs_gc_duration_seconds_bucket{le="5",kind="incremental"} 10350 -nodejs_gc_duration_seconds_bucket{le="5",kind="major"} 10350 -nodejs_gc_duration_seconds_bucket{le="5",kind="minor"} 127057 -nodejs_gc_duration_seconds_count{kind="incremental"} 10350 -nodejs_gc_duration_seconds_count{kind="major"} 10350 -nodejs_gc_duration_seconds_count{kind="minor"} 127057 -nodejs_gc_duration_seconds_sum{kind="incremental"} 1.2552301599999989 -nodejs_gc_duration_seconds_sum{kind="major"} 85.04404103299997 -nodejs_gc_duration_seconds_sum{kind="minor"} 194.3296368090023 -nodejs_heap_size_total_bytes 79540224 -nodejs_heap_size_used_bytes 41603432 -nodejs_heap_space_size_available_bytes{space="code"} 234048 -nodejs_heap_space_size_available_bytes{space="code_large_object"} 0 -nodejs_heap_space_size_available_bytes{space="large_object"} 0 -nodejs_heap_space_size_available_bytes{space="map"} 859968 -nodejs_heap_space_size_available_bytes{space="new"} 12943792 -nodejs_heap_space_size_available_bytes{space="new_large_object"} 16759296 -nodejs_heap_space_size_available_bytes{space="old"} 6402424 -nodejs_heap_space_size_available_bytes{space="read_only"} 0 -nodejs_heap_space_size_total_bytes{space="code"} 2002944 -nodejs_heap_space_size_total_bytes{space="code_large_object"} 622592 -nodejs_heap_space_size_total_bytes{space="large_object"} 4939776 -nodejs_heap_space_size_total_bytes{space="map"} 2625536 -nodejs_heap_space_size_total_bytes{space="new"} 33554432 -nodejs_heap_space_size_total_bytes{space="new_large_object"} 0 -nodejs_heap_space_size_total_bytes{space="old"} 35532800 -nodejs_heap_space_size_total_bytes{space="read_only"} 262144 -nodejs_heap_space_size_used_bytes{space="code"} 1666176 -nodejs_heap_space_size_used_bytes{space="code_large_object"} 544544 -nodejs_heap_space_size_used_bytes{space="large_object"} 4924536 -nodejs_heap_space_size_used_bytes{space="map"} 1761760 -nodejs_heap_space_size_used_bytes{space="new"} 3815504 -nodejs_heap_space_size_used_bytes{space="new_large_object"} 0 -nodejs_heap_space_size_used_bytes{space="old"} 28861704 -nodejs_heap_space_size_used_bytes{space="read_only"} 32808 -nodejs_version_info{version="v12.22.1",major="12",minor="22",patch="1"} 1 -process_cpu_seconds_total 5294.82443199997 -process_cpu_system_seconds_total 429.8532240000028 -process_cpu_user_seconds_total 4864.971207999993 -process_heap_bytes 235294720 -process_max_fds 4096 -process_open_fds 22 -process_resident_memory_bytes 141737984 -process_start_time_seconds 1619464576 -process_virtual_memory_bytes 412164096