Remove CDN dependency from docs
Change-Id: I6141d816ae7399cd8e16f0ad28f24f73fafec70d
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..e8967cc
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,21 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+test: static
+ docsify serve
+
+static:
+ make -C ../infra/perfetto-site.appspot.com/ static
+
+.PHONY: test static
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
index 64f9167..b94ef4e 100644
--- a/docs/_coverpage.md
+++ b/docs/_coverpage.md
@@ -1,6 +1,6 @@
# Perfetto
-![logo](https://ui.perfetto.dev/assets/logo-3d.png ':size=350')
+![logo](logo.png ':size=300')
> Performance instrumentation and tracing for Android, Linux and Chrome
diff --git a/docs/index.html b/docs/index.html
index ad966e0..33fd144 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -4,11 +4,9 @@
<head>
<meta charset="UTF-8">
<title>Perfetto - Docs</title>
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
- <meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link href="//fonts.googleapis.com/css?family=Exo" rel="stylesheet">
- <link rel="stylesheet" href="//unpkg.com/docsify-themeable/dist/css/theme-simple.css">
+ <link rel="stylesheet" href="/static/theme-simple.css">
<style>
:root {
--base-font-size: 18px;
@@ -30,7 +28,6 @@
markdown: {
renderer: {
link: function (href, title, text) {
- console.log(href);
title = title || '';
if (href.startsWith('/') && !href.startsWith('/docs')) {
href = `https://android.googlesource.com/platform/external/perfetto/+/master${href}`;
@@ -46,11 +43,11 @@
}
}
</script>
- <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
- <script src="//unpkg.com/docsify-themeable"></script>
- <script src="//unpkg.com/docsify-copy-code"></script>
- <script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
-
+ <!-- see infra/perfetto-site.appspot.com -->
+ <script src="/static/docsify.min.js"></script>
+ <script src="/static/docsify-themeable.min.js"></script>
+ <script src="/static/docsify-copy-code.min.js"></script>
+ <script src="/static/prism-bash.min.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/logo.png b/docs/logo.png
new file mode 100644
index 0000000..0c1d1bf
--- /dev/null
+++ b/docs/logo.png
Binary files differ
diff --git a/docs/static b/docs/static
new file mode 120000
index 0000000..bc15c09
--- /dev/null
+++ b/docs/static
@@ -0,0 +1 @@
+../infra/perfetto-site.appspot.com/static
\ No newline at end of file
diff --git a/infra/perfetto-site.appspot.com/.gitignore b/infra/perfetto-site.appspot.com/.gitignore
new file mode 100644
index 0000000..4047166
--- /dev/null
+++ b/infra/perfetto-site.appspot.com/.gitignore
@@ -0,0 +1,2 @@
+node_modules/
+static/
diff --git a/infra/perfetto-site.appspot.com/Makefile b/infra/perfetto-site.appspot.com/Makefile
index 4b29e53..a1586e4 100644
--- a/infra/perfetto-site.appspot.com/Makefile
+++ b/infra/perfetto-site.appspot.com/Makefile
@@ -12,10 +12,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-deploy:
- gcloud app deploy app.yaml --project perfetto-site
-
-test:
+test: static
dev_appserver.py .
-.PHONY: deploy test
+static: node_modules/.stamp
+ rm -rf static
+ mkdir -p static
+ cp node_modules/docsify/lib/docsify.min.js static/
+ cp node_modules/docsify-themeable/dist/js/docsify-themeable.min.js static/
+ cp node_modules/docsify-themeable/dist/css/theme-simple.css static/
+ cp node_modules/docsify-copy-code/dist/docsify-copy-code.min.js static/
+ cp node_modules/prismjs/components/prism-bash.min.js static/
+
+deploy: static
+ gcloud app deploy app.yaml --project perfetto-site
+
+node_modules/.stamp: package.json
+ npm install --quiet
+ touch "$@"
+
+.PHONY: deploy test static
diff --git a/infra/perfetto-site.appspot.com/app.yaml b/infra/perfetto-site.appspot.com/app.yaml
index 29a91df..5a3a9dd 100644
--- a/infra/perfetto-site.appspot.com/app.yaml
+++ b/infra/perfetto-site.appspot.com/app.yaml
@@ -16,5 +16,11 @@
api_version: 1
threadsafe: yes
handlers:
+- url: /static/
+ static_dir: static/
+ secure: always
+ redirect_http_response_code: 301
- url: .*
script: main.app
+ secure: always
+ redirect_http_response_code: 301
diff --git a/infra/perfetto-site.appspot.com/package-lock.json b/infra/perfetto-site.appspot.com/package-lock.json
new file mode 100644
index 0000000..8b57cd2
--- /dev/null
+++ b/infra/perfetto-site.appspot.com/package-lock.json
@@ -0,0 +1,424 @@
+{
+ "name": "perfetto-docs",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4="
+ },
+ "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": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "babel-polyfill": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
+ "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.10.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ }
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
+ },
+ "clipboard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz",
+ "integrity": "sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==",
+ "optional": true,
+ "requires": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "core-js": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+ },
+ "delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "optional": true
+ },
+ "docsify": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/docsify/-/docsify-4.7.1.tgz",
+ "integrity": "sha512-RdM4oN9yYNboTlm9JtbTMIqjYjPF7WBF7W37NXCG1fZIBC83Ya8qdH9c1rpPkLYw8HekJzSO2P13f6z/GVKITA==",
+ "requires": {
+ "marked": "^0.3.12",
+ "medium-zoom": "^0.4.0",
+ "opencollective": "^1.0.3",
+ "prismjs": "^1.9.0",
+ "tinydate": "^1.0.0",
+ "tweezer.js": "^1.4.0"
+ }
+ },
+ "docsify-copy-code": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/docsify-copy-code/-/docsify-copy-code-2.0.2.tgz",
+ "integrity": "sha512-jKJUtiWa57NqisVf4ZvbaqzT4Kj+j4uxarogyB8lWrrSbwwsC0t4JR6f7DTLgRbo65US+xZeo8e1s5qkUjIlwA=="
+ },
+ "docsify-themeable": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/docsify-themeable/-/docsify-themeable-0.4.0.tgz",
+ "integrity": "sha512-onJzSH/cZh/Stngj/WR3OAeGI/jLKfB3RhsksnsTFG003lcM1BcpdiLqxAeP4PUxbU4bzj0vC4a8phQDgfscfQ=="
+ },
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ }
+ },
+ "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="
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+ "optional": true,
+ "requires": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "inquirer": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz",
+ "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=",
+ "requires": {
+ "ansi-escapes": "^1.1.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.1",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx": "^4.1.0",
+ "string-width": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ },
+ "marked": {
+ "version": "0.3.19",
+ "resolved": "http://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
+ "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg=="
+ },
+ "medium-zoom": {
+ "version": "0.4.0",
+ "resolved": "http://registry.npmjs.org/medium-zoom/-/medium-zoom-0.4.0.tgz",
+ "integrity": "sha512-0z7yMfd6I1BTCAa8QaR4cp5AqDkQD571GzhHIbbfefKEssGLSvs+4Xai/itOAncm4FBlF5gUoMQ22yW9/f8Sig=="
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ },
+ "node-fetch": {
+ "version": "1.6.3",
+ "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz",
+ "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "opencollective": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz",
+ "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=",
+ "requires": {
+ "babel-polyfill": "6.23.0",
+ "chalk": "1.1.3",
+ "inquirer": "3.0.6",
+ "minimist": "1.2.0",
+ "node-fetch": "1.6.3",
+ "opn": "4.0.2"
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "requires": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "prismjs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz",
+ "integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==",
+ "requires": {
+ "clipboard": "^2.0.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "rx": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
+ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "tiny-emitter": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
+ "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==",
+ "optional": true
+ },
+ "tinydate": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.0.0.tgz",
+ "integrity": "sha1-IPMXVqE5We+MV+wTO6KbWt4ELKw="
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "tweezer.js": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.4.0.tgz",
+ "integrity": "sha1-IG/1aK00zw5WoEMH2Z/8Uhk9UEU="
+ }
+ }
+}
diff --git a/infra/perfetto-site.appspot.com/package.json b/infra/perfetto-site.appspot.com/package.json
new file mode 100644
index 0000000..d9018e4
--- /dev/null
+++ b/infra/perfetto-site.appspot.com/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "perfetto-docs",
+ "version": "1.0.0",
+ "main": "index.html",
+ "dependencies": {
+ "docsify": "^4.7.1",
+ "docsify-copy-code": "^2.0.2",
+ "docsify-themeable": "^0.4.0",
+ "prismjs": "^1.15.0"
+ }
+}