Compare commits
372 Commits
@vercel/py
...
@vercel/py
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be24510f16 | ||
|
|
05c534d855 | ||
|
|
910169dba7 | ||
|
|
0fc74feddc | ||
|
|
a9ea294514 | ||
|
|
42e0450d87 | ||
|
|
08c0feb58a | ||
|
|
60aaf76ed2 | ||
|
|
bd706beba5 | ||
|
|
b85a0a349a | ||
|
|
a97bc2af6d | ||
|
|
a5dc90c8cd | ||
|
|
e90521b5a4 | ||
|
|
10c598834a | ||
|
|
e58b34b82c | ||
|
|
02e1c921ac | ||
|
|
fcb14fa70e | ||
|
|
46e18128c7 | ||
|
|
e06d5247ef | ||
|
|
02195b92a7 | ||
|
|
7945155a0f | ||
|
|
edb6043c2c | ||
|
|
971481ba51 | ||
|
|
db8e456603 | ||
|
|
d1b4f24a4a | ||
|
|
4eb39ed53b | ||
|
|
6c7236ffd5 | ||
|
|
f0def040ac | ||
|
|
ee8dff2dc9 | ||
|
|
df86a6d48c | ||
|
|
b3958b3d12 | ||
|
|
8dd22703a7 | ||
|
|
c7e2280d23 | ||
|
|
2c239a6ee2 | ||
|
|
43709fbc74 | ||
|
|
52cd486e1d | ||
|
|
175f302a7f | ||
|
|
070bbd5825 | ||
|
|
cdeb4004c9 | ||
|
|
6bb162e5f5 | ||
|
|
8282442939 | ||
|
|
1f4f2af2f2 | ||
|
|
f1bb0e465a | ||
|
|
6dab4399c2 | ||
|
|
e87465d076 | ||
|
|
2f53b0dcdb | ||
|
|
b2e5212d0f | ||
|
|
28c9999c10 | ||
|
|
edb31fb412 | ||
|
|
2f0ea24552 | ||
|
|
7d09fdc5a4 | ||
|
|
23dce48b23 | ||
|
|
d7d308ca09 | ||
|
|
0e412361ad | ||
|
|
d563a99fb8 | ||
|
|
6ce4c2e182 | ||
|
|
e31d6d4062 | ||
|
|
f2f421b494 | ||
|
|
46836e12b5 | ||
|
|
3fc2611bf0 | ||
|
|
b4d8c411bd | ||
|
|
82b7d6980c | ||
|
|
895b233605 | ||
|
|
d9e6b5348b | ||
|
|
1934a64864 | ||
|
|
c412642668 | ||
|
|
793fe9aee1 | ||
|
|
ddc54d2ca4 | ||
|
|
39e5f0a364 | ||
|
|
43ed9ec859 | ||
|
|
8ba44fca79 | ||
|
|
27dbefaecf | ||
|
|
b4a13913c7 | ||
|
|
f842266b2e | ||
|
|
ad0cc858ed | ||
|
|
4bb7180de9 | ||
|
|
7a4faa480d | ||
|
|
421be5d738 | ||
|
|
b8eaf10974 | ||
|
|
92a4bf27cf | ||
|
|
2672838b64 | ||
|
|
1c96071ddc | ||
|
|
71cdf759da | ||
|
|
93ebd213de | ||
|
|
a32ba8f214 | ||
|
|
d416f70a6e | ||
|
|
ba9e1dd0ba | ||
|
|
d513f74b70 | ||
|
|
47f92f8f14 | ||
|
|
9aa669d735 | ||
|
|
99cab6f34a | ||
|
|
547e7dccf7 | ||
|
|
dce9a89407 | ||
|
|
c1cdddd974 | ||
|
|
4bce77dd4b | ||
|
|
3a79810944 | ||
|
|
5b3fbdddb3 | ||
|
|
25e9ecb5a2 | ||
|
|
415515840c | ||
|
|
9ba14be12e | ||
|
|
f1321946c5 | ||
|
|
230b69abf4 | ||
|
|
0d96f80ac8 | ||
|
|
178f5e7f00 | ||
|
|
dbfdf20c9d | ||
|
|
a80ed4ec9b | ||
|
|
833c3d7c01 | ||
|
|
19d0db7270 | ||
|
|
041e8cc601 | ||
|
|
b118e461b1 | ||
|
|
e519d49d7b | ||
|
|
27683818ba | ||
|
|
e016e38229 | ||
|
|
5db1c5e610 | ||
|
|
24c228569f | ||
|
|
963de9b64f | ||
|
|
ab7fd52305 | ||
|
|
0fdb0dac91 | ||
|
|
bb0b632dcf | ||
|
|
ced9495143 | ||
|
|
fadc3f2588 | ||
|
|
a1d548dfef | ||
|
|
754090a8ab | ||
|
|
8269a48ee0 | ||
|
|
9f05a1865c | ||
|
|
8d1afc026f | ||
|
|
130f36aad6 | ||
|
|
dd87c9b0c6 | ||
|
|
f813b3340b | ||
|
|
976b02e895 | ||
|
|
843be9658c | ||
|
|
ad501a4cd0 | ||
|
|
727ae587db | ||
|
|
536b15079b | ||
|
|
887882697b | ||
|
|
e2db7c7734 | ||
|
|
022504787c | ||
|
|
0f424de406 | ||
|
|
4819c3ac61 | ||
|
|
c28ca7ef2d | ||
|
|
068ea00615 | ||
|
|
7f8145ab40 | ||
|
|
1a12715096 | ||
|
|
5b6d565360 | ||
|
|
0794158906 | ||
|
|
02cdb88d3b | ||
|
|
fa58855114 | ||
|
|
1fac11792f | ||
|
|
05ffc9ce2b | ||
|
|
f848551043 | ||
|
|
9712abc5bf | ||
|
|
a9ef3cc726 | ||
|
|
e5cc1d643a | ||
|
|
c68e83f972 | ||
|
|
80118de040 | ||
|
|
c69da18e9c | ||
|
|
e19446f89c | ||
|
|
ea3233502d | ||
|
|
0a8810b64f | ||
|
|
f6b373f0f4 | ||
|
|
7ad2a99cd7 | ||
|
|
0349eea494 | ||
|
|
ed4d006fb7 | ||
|
|
12a9d203e9 | ||
|
|
ac1f4cf789 | ||
|
|
b284ca350a | ||
|
|
a43bf6c912 | ||
|
|
62410806bb | ||
|
|
47e3111cab | ||
|
|
135f35002f | ||
|
|
ee40052cee | ||
|
|
86b730c1cd | ||
|
|
b440249c26 | ||
|
|
5380c12569 | ||
|
|
f11eb32b2c | ||
|
|
3d40e343ac | ||
|
|
80f525796f | ||
|
|
af4ad358f2 | ||
|
|
e6033d7a2d | ||
|
|
d3148dffaa | ||
|
|
30048cf4ff | ||
|
|
07c65fa5c8 | ||
|
|
411ec64986 | ||
|
|
e4d2cc704c | ||
|
|
38db720586 | ||
|
|
c26c7886be | ||
|
|
b0e5d308ca | ||
|
|
609b98cc73 | ||
|
|
e0ec6c792b | ||
|
|
b29db2fd1d | ||
|
|
b604ced99d | ||
|
|
b7fd69517e | ||
|
|
4c821a6fb5 | ||
|
|
5c4fb319af | ||
|
|
fbe9ea0750 | ||
|
|
fa0f1b90b4 | ||
|
|
2daa0e28d3 | ||
|
|
48358b4986 | ||
|
|
c59f44a63b | ||
|
|
ca27864201 | ||
|
|
6c81a87338 | ||
|
|
a7bef9387b | ||
|
|
65d6c5e1f4 | ||
|
|
c09355fdb3 | ||
|
|
d9ac4c45e1 | ||
|
|
c2ff95714f | ||
|
|
a51feb7a62 | ||
|
|
ff10918230 | ||
|
|
04bea1e3cd | ||
|
|
bc5e5e8a9c | ||
|
|
2e647175f5 | ||
|
|
1a4e1d2fdd | ||
|
|
49e2274d81 | ||
|
|
9af3938544 | ||
|
|
7b5bf061c2 | ||
|
|
ffb98781f1 | ||
|
|
3411fcbb68 | ||
|
|
55cfd33338 | ||
|
|
93a9e5bed3 | ||
|
|
b454021234 | ||
|
|
bb705cd091 | ||
|
|
0986f4bcb6 | ||
|
|
83f77223aa | ||
|
|
effda1fa6c | ||
|
|
2ab6a7ef0c | ||
|
|
200bf5e996 | ||
|
|
94ab2512e9 | ||
|
|
da3207278e | ||
|
|
8e10a82b43 | ||
|
|
d7731d191b | ||
|
|
0f5f99e667 | ||
|
|
93a7831943 | ||
|
|
0eacbeae11 | ||
|
|
e50417dc47 | ||
|
|
4840a25d30 | ||
|
|
785e91979d | ||
|
|
7a776c54b8 | ||
|
|
997031c53b | ||
|
|
fdee03a599 | ||
|
|
c5a93ecdad | ||
|
|
5a9391b7ce | ||
|
|
99e49473b8 | ||
|
|
de1cc6f9a7 | ||
|
|
08eedd8f34 | ||
|
|
5021a71a8e | ||
|
|
56671d7c2f | ||
|
|
5035fa537f | ||
|
|
63cc9009c8 | ||
|
|
ccf6e3c432 | ||
|
|
8d015e3138 | ||
|
|
42f2fa1a20 | ||
|
|
8397aac0e3 | ||
|
|
7bcdc144eb | ||
|
|
624da9170d | ||
|
|
fb5b013a03 | ||
|
|
0a4bb53a58 | ||
|
|
2fbd9c78e3 | ||
|
|
1ed2b7a57d | ||
|
|
88cd9ca3c3 | ||
|
|
ecea2ca4a3 | ||
|
|
3f132bc15b | ||
|
|
61d95094c0 | ||
|
|
f7c47975e3 | ||
|
|
7c96f9f9a5 | ||
|
|
a5c805b6eb | ||
|
|
ff2a22023d | ||
|
|
c6efc028aa | ||
|
|
96565da1cf | ||
|
|
afb5e7fc85 | ||
|
|
34cc987be8 | ||
|
|
55c60d30e6 | ||
|
|
eb993d47ac | ||
|
|
d2184628d1 | ||
|
|
65f0cc6797 | ||
|
|
c628c7b58e | ||
|
|
4e005274f9 | ||
|
|
482373f711 | ||
|
|
c80bb37e8d | ||
|
|
a7acd92ffd | ||
|
|
035720ca82 | ||
|
|
a6ae923a7a | ||
|
|
83c0711d6e | ||
|
|
231f18d56b | ||
|
|
9d73091d8c | ||
|
|
0ca3189f79 | ||
|
|
9ff5bb9cb3 | ||
|
|
45d05a603b | ||
|
|
6ef3b12fde | ||
|
|
b16f94098a | ||
|
|
be315bebcf | ||
|
|
5608a4c42c | ||
|
|
66458fe3e0 | ||
|
|
081b3fd3db | ||
|
|
56c8af51b2 | ||
|
|
e844a38286 | ||
|
|
cfb84b5328 | ||
|
|
4c61779d1b | ||
|
|
ee9b3710ec | ||
|
|
719d1ffba9 | ||
|
|
6849e3aec0 | ||
|
|
dd2399f361 | ||
|
|
684c229984 | ||
|
|
e6c50e2efb | ||
|
|
0b5d38e862 | ||
|
|
775e6b4856 | ||
|
|
3a9cf083cb | ||
|
|
6b58b56c49 | ||
|
|
212cee19b4 | ||
|
|
c9d3ec21c2 | ||
|
|
5fa8ed56a9 | ||
|
|
ff80043acf | ||
|
|
1f0ebcef24 | ||
|
|
c35d0e8408 | ||
|
|
65446b73da | ||
|
|
f3c5c60786 | ||
|
|
ca0665efcd | ||
|
|
2bc1f9f45e | ||
|
|
820ecc7254 | ||
|
|
f41899656b | ||
|
|
c4373cdcad | ||
|
|
28502ee32f | ||
|
|
740b18612f | ||
|
|
8b4dea8870 | ||
|
|
e98d24ec8b | ||
|
|
d4b32ecd6a | ||
|
|
0a62cf99ed | ||
|
|
51de339a91 | ||
|
|
0e3d904573 | ||
|
|
8c4e43935b | ||
|
|
82436a7015 | ||
|
|
70cfdc989e | ||
|
|
61c38d6823 | ||
|
|
af932e9a3e | ||
|
|
805e92579f | ||
|
|
548fa56803 | ||
|
|
c9665b79f1 | ||
|
|
df2d56de19 | ||
|
|
b2eb7a0be2 | ||
|
|
ce07084184 | ||
|
|
4292a59cc0 | ||
|
|
3fc616d1e2 | ||
|
|
31566b376d | ||
|
|
d6b2fb1f31 | ||
|
|
87f40d98d4 | ||
|
|
1b809bc225 | ||
|
|
05539dcae7 | ||
|
|
3ad2efeb74 | ||
|
|
e4833027bd | ||
|
|
34a6a16a1b | ||
|
|
b9f7d5b9c8 | ||
|
|
44105bd4e9 | ||
|
|
ba09c08ce3 | ||
|
|
ef63247fc0 | ||
|
|
3c75f1440d | ||
|
|
8db178a146 | ||
|
|
61f87acaf4 | ||
|
|
406f6901b4 | ||
|
|
b15b653d91 | ||
|
|
fc7d6bf670 | ||
|
|
e774407e8a | ||
|
|
d8fb474365 | ||
|
|
eec778b244 | ||
|
|
c23b9ccd1d | ||
|
|
f61b36495c | ||
|
|
a1ec28ba36 | ||
|
|
97eeddb6ac | ||
|
|
69b62b8101 | ||
|
|
591c247c4e | ||
|
|
8dc3744cf3 | ||
|
|
8f108c51fa | ||
|
|
c8e7b266bc | ||
|
|
378d62083c |
@@ -19,6 +19,11 @@ indent_style = space
|
|||||||
[*.py]
|
[*.py]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.go]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
tab_width = 4
|
||||||
|
|
||||||
[*.asm]
|
[*.asm]
|
||||||
indent_size = 8
|
indent_size = 8
|
||||||
|
|
||||||
|
|||||||
@@ -34,3 +34,6 @@ packages/now-node-bridge/bridge.*
|
|||||||
|
|
||||||
# now-static-build
|
# now-static-build
|
||||||
packages/now-static-build/test/fixtures
|
packages/now-static-build/test/fixtures
|
||||||
|
|
||||||
|
# redwood
|
||||||
|
packages/redwood/test/fixtures
|
||||||
|
|||||||
35
.github/CODEOWNERS
vendored
@@ -1,28 +1,27 @@
|
|||||||
# Documentation
|
# Documentation
|
||||||
# https://help.github.com/en/articles/about-code-owners
|
# https://help.github.com/en/articles/about-code-owners
|
||||||
|
|
||||||
* @tootallnate @leo
|
* @TooTallNate
|
||||||
/.github/workflows @AndyBitz @styfle
|
/.github/workflows @AndyBitz @styfle
|
||||||
/packages/frameworks @AndyBitz
|
/packages/frameworks @AndyBitz
|
||||||
/packages/now-cli/src/commands/dev/ @tootallnate @leo @styfle @AndyBitz
|
/packages/now-cli/src/commands/dev @TooTallNate @styfle @AndyBitz
|
||||||
/packages/now-cli/src/util/dev/ @tootallnate @leo @styfle @AndyBitz
|
/packages/now-cli/src/util/dev @TooTallNate @styfle @AndyBitz
|
||||||
/packages/now-cli/src/commands/domains/ @javivelasco @mglagola @anatrajkovska
|
/packages/now-cli/src/commands/domains @javivelasco @mglagola @anatrajkovska
|
||||||
/packages/now-cli/src/commands/certs/ @javivelasco @mglagola @anatrajkovska
|
/packages/now-cli/src/commands/certs @javivelasco @mglagola @anatrajkovska
|
||||||
/packages/now-cli/src/commands/env @styfle @lucleray
|
/packages/now-cli/src/commands/env @styfle @lucleray
|
||||||
/packages/now-client @leo @rdev
|
/packages/now-client @rdev @styfle @TooTallNate
|
||||||
/packages/now-build-utils @styfle @AndyBitz
|
/packages/now-build-utils @styfle @AndyBitz @TooTallNate
|
||||||
/packages/now-node @styfle @tootallnate @lucleray
|
/packages/now-node @styfle @TooTallNate @lucleray
|
||||||
/packages/now-node-bridge @styfle @tootallnate @lucleray
|
/packages/now-node-bridge @styfle @TooTallNate @lucleray
|
||||||
/packages/now-next @Timer @ijjk
|
/packages/now-next @Timer @ijjk
|
||||||
/packages/now-go @styfle @sophearak
|
/packages/now-go @styfle @TooTallNate
|
||||||
/packages/now-python @styfle @sophearak
|
/packages/now-python @styfle @TooTallNate
|
||||||
/packages/now-ruby @styfle @coetry @nathancahill
|
/packages/now-ruby @styfle @coetry @TooTallNate
|
||||||
/packages/now-static-build @styfle @AndyBitz
|
/packages/now-static-build @styfle @AndyBitz
|
||||||
/packages/now-routing-utils @styfle @dav-is @ijjk
|
/packages/now-routing-utils @styfle @dav-is @ijjk
|
||||||
|
/examples @mcsdevv @timothyis
|
||||||
/examples @msweeneydev @timothyis
|
|
||||||
/examples/create-react-app @Timer
|
/examples/create-react-app @Timer
|
||||||
/examples/nextjs @timneutkens
|
/examples/nextjs @timneutkens @Timer
|
||||||
/examples/hugo @msweeneydev @timothyis @styfle
|
/examples/hugo @mcsdevv @timothyis @styfle
|
||||||
/examples/jekyll @msweeneydev @timothyis @sarupbanskota
|
/examples/jekyll @mcsdevv @timothyis @styfle
|
||||||
/examples/zola @msweeneydev @timothyis @styfle
|
/examples/zola @mcsdevv @timothyis @styfle
|
||||||
|
|||||||
18
.github/CONTRIBUTING.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
When contributing to this repository, please first discuss the change you wish to make via [GitHub Discussions](https://github.com/zeit/now/discussions/new) with the owners of this repository before submitting a Pull Request.
|
When contributing to this repository, please first discuss the change you wish to make via [GitHub Discussions](https://github.com/vercel/vercel/discussions/new) with the owners of this repository before submitting a Pull Request.
|
||||||
|
|
||||||
Please read our [code of conduct](CODE_OF_CONDUCT.md) and follow it in all your interactions with the project.
|
Please read our [code of conduct](CODE_OF_CONDUCT.md) and follow it in all your interactions with the project.
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ This project is configured in a monorepo pattern where one repo contains multipl
|
|||||||
To get started, execute the following:
|
To get started, execute the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/zeit/now
|
git clone https://github.com/vercel/vercel
|
||||||
yarn install
|
yarn install
|
||||||
yarn bootstrap
|
yarn bootstrap
|
||||||
yarn build
|
yarn build
|
||||||
@@ -82,24 +82,24 @@ trace(['path/to/entrypoint.js'], {
|
|||||||
.then(e => console.error(e));
|
.then(e => console.error(e));
|
||||||
```
|
```
|
||||||
|
|
||||||
When you run this script, you'll see all imported files. If anything file is missing, the bug is in [@zeit/node-file-trace](https://github.com/zeit/node-file-trace) and not the Builder.
|
When you run this script, you'll see all imported files. If anything file is missing, the bug is in [@zeit/node-file-trace](https://github.com/vercel/node-file-trace) and not the Builder.
|
||||||
|
|
||||||
## Deploy a Builder with existing project
|
## Deploy a Builder with existing project
|
||||||
|
|
||||||
Sometimes you want to test changes to a Builder against an existing project, maybe with `now dev` or an actual deployment. You can avoid publishing every Builder change to npm by uploading the Builder as a tarball.
|
Sometimes you want to test changes to a Builder against an existing project, maybe with `vercel dev` or an actual deployment. You can avoid publishing every Builder change to npm by uploading the Builder as a tarball.
|
||||||
|
|
||||||
1. Change directory to the desired Builder `cd ./packages/now-node`
|
1. Change directory to the desired Builder `cd ./packages/now-node`
|
||||||
2. Run `yarn build` to compile typescript and other build steps
|
2. Run `yarn build` to compile typescript and other build steps
|
||||||
3. Run `npm pack` to create a tarball file
|
3. Run `npm pack` to create a tarball file
|
||||||
4. Run `now *.tgz` to upload the tarball file and get a URL
|
4. Run `vercel *.tgz` to upload the tarball file and get a URL
|
||||||
5. Edit any existing `vercel.json` project and replace `use` with the URL
|
5. Edit any existing `vercel.json` project and replace `use` with the URL
|
||||||
6. Run `now` or `now dev` to deploy with the experimental Builder
|
6. Run `vercel` or `vercel dev` to deploy with the experimental Builder
|
||||||
|
|
||||||
## Add a New Framework
|
## Add a New Framework
|
||||||
|
|
||||||
You can add support for a new Framework by creating a Pull Request for this repository and following the steps below:
|
You can add support for a new Framework by creating a Pull Request for this repository and following the steps below:
|
||||||
|
|
||||||
1. Add the Framework to the `@now/frameworks` package: The file is located in `packages/frameworks/frameworks.json`. You can copy the structure of an existing one and adjust the required fields. Note that the `settings` property either contains a `value` or a `placeholder`. The `value` property is used when something is not configurable, the `placeholder` is used when something is configurable and can be changed with configuration. An example would be the Output Directory for Hugo, it's `public` by default but can be changed through its config file, so we use `placeholder` with an explanation of what can be used.
|
1. Add the Framework to the `@vercel/frameworks` package: The file is located in `./packages/frameworks/frameworks.json`. You can copy the structure of an existing one and adjust the required fields. Note that the `settings` property either contains a `value` or a `placeholder`. The `value` property is used when something is not configurable, the `placeholder` is used when something is configurable and can be changed with configuration. An example would be the Output Directory for Hugo, it's `public` by default but can be changed through its config file, so we use `placeholder` with an explanation of what can be used.
|
||||||
2. Add an example to the `examples/` directory: The name of the directory should equal the slug of the framework used in `@now/frameworks`. The `.github/EXAMPLE_README_TEMPLATE.md` file can be used to create a `README.md` file for the example.
|
2. Add an example to the `./examples` directory: The name of the directory should equal the slug of the framework used in `@vercel/frameworks`. The `.github/EXAMPLE_README_TEMPLATE.md` file can be used to create a `README.md` file for the example.
|
||||||
3. Update the `@now/static-build` package: The file `packages/now-static-build/src/frameworks.ts` has to be extended. You can add default routes that will always be applied to projects that use this Framework or specify some paths that will be cached to speed up the build process.
|
3. Update the `@vercel/static-build` package: The file `./packages/now-static-build/src/frameworks.ts` has to be extended. You can add default routes that will always be applied to projects that use this Framework or specify some paths that will be cached to speed up the build process.
|
||||||
4. After your Pull Request has been merged and released, other users can select the example on the Vercel dashboard and deploy it.
|
4. After your Pull Request has been merged and released, other users can select the example on the Vercel dashboard and deploy it.
|
||||||
|
|||||||
6
.github/EXAMPLE_README_TEMPLATE.md
vendored
@@ -6,14 +6,14 @@ This directory is a brief example of a [Name](site-link) site that can be deploy
|
|||||||
|
|
||||||
Deploy your own [Name] project with Vercel.
|
Deploy your own [Name] project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now-examples/tree/master/example-directory)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/example-directory)
|
||||||
|
|
||||||
### How We Created This Example
|
### How We Created This Example
|
||||||
|
|
||||||
To get started with [Name] on Vercel, you can use the [CLI Tool Used](CLI-link) to initialize the project:
|
To get started with [Name] on Vercel, you can use the [CLI Tool Used](CLI-link) to initialize the project:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ now init charge
|
$ vercel init [Name]]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
### Deploying From Your Terminal
|
||||||
@@ -21,5 +21,5 @@ $ now init charge
|
|||||||
Once initialized, you can deploy the [Name] example with just a single command:
|
Once initialized, you can deploy the [Name] example with just a single command:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ now
|
$ vercel
|
||||||
```
|
```
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -4,8 +4,8 @@ contact_links:
|
|||||||
url: https://vercel.com/support/request
|
url: https://vercel.com/support/request
|
||||||
about: Report a bug using the Vercel support form
|
about: Report a bug using the Vercel support form
|
||||||
- name: Feature Request
|
- name: Feature Request
|
||||||
url: https://github.com/zeit/now/discussions/new
|
url: https://github.com/vercel/vercel/discussions/new?category_id=66161
|
||||||
about: Request a feature to be added to the platform
|
about: Share ideas for new features
|
||||||
- name: Ask a Question
|
- name: Ask a Question
|
||||||
url: https://github.com/zeit/now/discussions/new
|
url: https://github.com/vercel/vercel/discussions/new?category_id=66160
|
||||||
about: Ask questions and discuss with other community members
|
about: Ask the community for help
|
||||||
|
|||||||
6
.github/workflows/cancel.yml
vendored
@@ -9,10 +9,10 @@ jobs:
|
|||||||
cancel:
|
cancel:
|
||||||
name: 'Cancel Previous Runs'
|
name: 'Cancel Previous Runs'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 3
|
timeout-minutes: 2
|
||||||
steps:
|
steps:
|
||||||
- uses: styfle/cancel-workflow-action@0.3.1
|
- uses: styfle/cancel-workflow-action@0.4.1
|
||||||
with:
|
with:
|
||||||
workflow_id: 849295, 849296, 849297, 849298
|
workflow_id: 849295, 849296, 849297, 849298
|
||||||
access_token: ${{ secrets.GITHUB_WORKFLOW_TOKEN }}
|
access_token: ${{ github.token }}
|
||||||
|
|
||||||
|
|||||||
12
.github/workflows/test-integration-cli.yml
vendored
@@ -20,8 +20,12 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: git fetch origin master --depth=10
|
with:
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=10
|
fetch-depth: 100
|
||||||
|
- run: git --version
|
||||||
|
- run: git fetch origin master --depth=100
|
||||||
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- run: yarn install
|
- run: yarn install
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
@@ -29,5 +33,5 @@ jobs:
|
|||||||
node-version: ${{ matrix.node }}
|
node-version: ${{ matrix.node }}
|
||||||
- run: yarn test-integration-cli --clean false
|
- run: yarn test-integration-cli --clean false
|
||||||
env:
|
env:
|
||||||
ZEIT_TEAM_TOKEN: ${{ secrets.ZEIT_TEAM_TOKEN }}
|
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
||||||
ZEIT_REGISTRATION_URL: ${{ secrets.ZEIT_REGISTRATION_URL }}
|
VERCEL_REGISTRATION_URL: ${{ secrets.VERCEL_REGISTRATION_URL }}
|
||||||
|
|||||||
12
.github/workflows/test-integration-dev.yml
vendored
@@ -20,8 +20,12 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: git fetch origin master --depth=10
|
with:
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=10
|
fetch-depth: 100
|
||||||
|
- run: git --version
|
||||||
|
- run: git fetch origin master --depth=100
|
||||||
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- name: Install Hugo
|
- name: Install Hugo
|
||||||
if: matrix.os == 'macos-latest'
|
if: matrix.os == 'macos-latest'
|
||||||
run: curl -L -O https://github.com/gohugoio/hugo/releases/download/v0.56.0/hugo_0.56.0_macOS-64bit.tar.gz && tar -xzf hugo_0.56.0_macOS-64bit.tar.gz && mv ./hugo packages/now-cli/test/dev/fixtures/08-hugo/
|
run: curl -L -O https://github.com/gohugoio/hugo/releases/download/v0.56.0/hugo_0.56.0_macOS-64bit.tar.gz && tar -xzf hugo_0.56.0_macOS-64bit.tar.gz && mv ./hugo packages/now-cli/test/dev/fixtures/08-hugo/
|
||||||
@@ -32,5 +36,5 @@ jobs:
|
|||||||
node-version: ${{ matrix.node }}
|
node-version: ${{ matrix.node }}
|
||||||
- run: yarn test-integration-dev --clean false
|
- run: yarn test-integration-dev --clean false
|
||||||
env:
|
env:
|
||||||
ZEIT_TEAM_TOKEN: ${{ secrets.ZEIT_TEAM_TOKEN }}
|
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
||||||
ZEIT_REGISTRATION_URL: ${{ secrets.ZEIT_REGISTRATION_URL }}
|
VERCEL_REGISTRATION_URL: ${{ secrets.VERCEL_REGISTRATION_URL }}
|
||||||
|
|||||||
12
.github/workflows/test-integration-once.yml
vendored
@@ -15,11 +15,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: git fetch origin master --depth=10
|
with:
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=10
|
fetch-depth: 100
|
||||||
|
- run: git --version
|
||||||
|
- run: git fetch origin master --depth=100
|
||||||
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- run: yarn install
|
- run: yarn install
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- run: yarn test-integration-once --clean false
|
- run: yarn test-integration-once --clean false
|
||||||
env:
|
env:
|
||||||
ZEIT_TEAM_TOKEN: ${{ secrets.ZEIT_TEAM_TOKEN }}
|
VERCEL_TEAM_TOKEN: ${{ secrets.VERCEL_TEAM_TOKEN }}
|
||||||
ZEIT_REGISTRATION_URL: ${{ secrets.ZEIT_REGISTRATION_URL }}
|
VERCEL_REGISTRATION_URL: ${{ secrets.VERCEL_REGISTRATION_URL }}
|
||||||
|
|||||||
10
.github/workflows/test-unit.yml
vendored
@@ -20,9 +20,15 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: git fetch origin master --depth=10
|
with:
|
||||||
- run: git fetch origin ${{ github.ref }} --depth=10
|
fetch-depth: 100
|
||||||
|
- run: git --version
|
||||||
|
- run: git fetch origin master --depth=100
|
||||||
|
- run: git fetch origin ${{ github.ref }} --depth=100
|
||||||
|
- run: git diff origin/master...HEAD --name-only
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
- run: yarn install
|
- run: yarn install
|
||||||
- run: yarn run build
|
- run: yarn run build
|
||||||
- run: yarn run lint
|
- run: yarn run lint
|
||||||
|
|||||||
4
.gitignore
vendored
@@ -1,5 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
|
||||||
dist
|
dist
|
||||||
.vscode
|
.vscode
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
@@ -10,8 +9,6 @@ coverage.lcov
|
|||||||
*.swp
|
*.swp
|
||||||
*.bak
|
*.bak
|
||||||
*.tgz
|
*.tgz
|
||||||
packages/now-cli/.builders
|
|
||||||
packages/now-cli/assets
|
|
||||||
packages/now-cli/src/util/dev/templates/*.ts
|
packages/now-cli/src/util/dev/templates/*.ts
|
||||||
packages/now-cli/src/util/constants.ts
|
packages/now-cli/src/util/constants.ts
|
||||||
packages/now-cli/test/**/yarn.lock
|
packages/now-cli/test/**/yarn.lock
|
||||||
@@ -29,3 +26,4 @@ test/lib/deployment/failed-page.txt
|
|||||||
/.env
|
/.env
|
||||||
/public
|
/public
|
||||||
__pycache__
|
__pycache__
|
||||||
|
.vercel
|
||||||
|
|||||||
@@ -1,10 +1,33 @@
|
|||||||
# Runtime Developer Reference
|
# Runtime Developer Reference
|
||||||
|
|
||||||
The following page is a reference for how to create a Runtime using the available Runtime API.
|
The following page is a reference for how to create a Runtime by implementing
|
||||||
|
the Runtime API interface.
|
||||||
|
|
||||||
A Runtime is an npm module that exposes a `build` function and optionally an `analyze` function and `prepareCache` function.
|
A Runtime is an npm module that implements the following interface:
|
||||||
Official Runtimes are published to [npmjs.com](https://npmjs.com) as a package and referenced in the `use` property of the `vercel.json` configuration file.
|
|
||||||
However, the `use` property will work with any [npm install argument](https://docs.npmjs.com/cli/install) such as a git repo url which is useful for testing your Runtime.
|
```typescript
|
||||||
|
interface Runtime {
|
||||||
|
version: number;
|
||||||
|
build: (options: BuildOptions) => Promise<BuildResult>;
|
||||||
|
analyze?: (options: AnalyzeOptions) => Promise<string>;
|
||||||
|
prepareCache?: (options: PrepareCacheOptions) => Promise<CacheOutputs>;
|
||||||
|
shouldServe?: (options: ShouldServeOptions) => Promise<boolean>;
|
||||||
|
startDevServer?: (
|
||||||
|
options: StartDevServerOptions
|
||||||
|
) => Promise<StartDevServerResult>;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `version` property and the `build()` function are the only _required_ fields.
|
||||||
|
The rest are optional extensions that a Runtime _may_ implement in order to
|
||||||
|
enhance functionality. These functions are documented in more detail below.
|
||||||
|
|
||||||
|
Official Runtimes are published to [the npm registry](https://npmjs.com) as a package and referenced in the `use` property of the `vercel.json` configuration file.
|
||||||
|
|
||||||
|
> **Note:** The `use` property in the `builds` array will work with any [npm
|
||||||
|
> install argument](https://docs.npmjs.com/cli/install) such as a git repo URL,
|
||||||
|
> which is useful for testing your Runtime. Alternatively, the `functions` property
|
||||||
|
> requires that you specify a specifc tag published to npm, for stability purposes.
|
||||||
|
|
||||||
See the [Runtimes Documentation](https://vercel.com/docs/runtimes) to view example usage.
|
See the [Runtimes Documentation](https://vercel.com/docs/runtimes) to view example usage.
|
||||||
|
|
||||||
@@ -16,146 +39,170 @@ A **required** exported constant that decides which version of the Runtime API t
|
|||||||
|
|
||||||
The latest and suggested version is `3`.
|
The latest and suggested version is `3`.
|
||||||
|
|
||||||
### `analyze`
|
**Example:**
|
||||||
|
|
||||||
An **optional** exported function that returns a unique fingerprint used for the purpose of [build de-duplication](https://vercel.com/docs/v2/platform/deployments#deduplication). If the `analyze` function is not supplied, a random fingerprint is assigned to each build.
|
```typescript
|
||||||
|
export const version = 3;
|
||||||
```js
|
|
||||||
export analyze({
|
|
||||||
files: Files,
|
|
||||||
entrypoint: String,
|
|
||||||
workPath: String,
|
|
||||||
config: Object
|
|
||||||
}) : String fingerprint
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are using TypeScript, you should use the following types:
|
### `build()`
|
||||||
|
|
||||||
```ts
|
A **required** exported function that returns a Serverless Function.
|
||||||
import { AnalyzeOptions } from '@now/build-utils'
|
|
||||||
|
|
||||||
export analyze(options: AnalyzeOptions) {
|
> What's a Serverless Function? Read about [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) to learn more.
|
||||||
return 'fingerprint goes here'
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { BuildOptions, createLambda } from '@vercel/build-utils';
|
||||||
|
|
||||||
|
export async function build(options: BuildOptions) {
|
||||||
|
// Build the code here…
|
||||||
|
|
||||||
|
const lambda = createLambda(/* … */);
|
||||||
|
return {
|
||||||
|
output: lambda,
|
||||||
|
watch: [
|
||||||
|
// Dependent files to trigger a rebuild in `vercel dev` go here…
|
||||||
|
],
|
||||||
|
routes: [
|
||||||
|
// If your Runtime needs to define additional routing, define it here…
|
||||||
|
],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `build`
|
### `analyze()`
|
||||||
|
|
||||||
A **required** exported function that returns a [Serverless Function](#serverless-function).
|
An **optional** exported function that returns a unique fingerprint used for the
|
||||||
|
purpose of [build
|
||||||
|
de-duplication](https://vercel.com/docs/v2/platform/deployments#deduplication).
|
||||||
|
If the `analyze()` function is not supplied, then a random fingerprint is
|
||||||
|
assigned to each build.
|
||||||
|
|
||||||
What's a Serverless Function? Read about [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction) to learn more.
|
**Example:**
|
||||||
|
|
||||||
```js
|
```typescript
|
||||||
build({
|
import { AnalyzeOptions } from '@vercel/build-utils';
|
||||||
files: Files,
|
|
||||||
entrypoint: String,
|
export async function analyze(options: AnalyzeOptions) {
|
||||||
workPath: String,
|
// Do calculations to generate a fingerprint based off the source code here…
|
||||||
config: Object,
|
|
||||||
meta?: {
|
return 'fingerprint goes here';
|
||||||
isDev?: Boolean,
|
|
||||||
requestPath?: String,
|
|
||||||
filesChanged?: Array<String>,
|
|
||||||
filesRemoved?: Array<String>
|
|
||||||
}
|
|
||||||
}) : {
|
|
||||||
watch?: Array<String>,
|
|
||||||
output: Lambda,
|
|
||||||
routes?: Object
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are using TypeScript, you should use the following types:
|
### `prepareCache()`
|
||||||
|
|
||||||
```ts
|
An **optional** exported function that is executed after [`build()`](#build) is
|
||||||
import { BuildOptions } from '@now/build-utils'
|
completed. The implementation should return an object of `File`s that will be
|
||||||
|
pre-populated in the working directory for the next build run in the user's
|
||||||
|
project. An example use-case is that `@vercel/node` uses this function to cache
|
||||||
|
the `node_modules` directory, making it faster to install npm dependencies for
|
||||||
|
future builds.
|
||||||
|
|
||||||
export build(options: BuildOptions) {
|
**Example:**
|
||||||
// Build the code here
|
|
||||||
|
```typescript
|
||||||
|
import { PrepareCacheOptions } from '@vercel/build-utils';
|
||||||
|
|
||||||
|
export async function prepareCache(options: PrepareCacheOptions) {
|
||||||
|
// Create a mapping of file names and `File` object instances to cache here…
|
||||||
|
|
||||||
return {
|
return {
|
||||||
output: {
|
|
||||||
'path-to-file': File,
|
'path-to-file': File,
|
||||||
'path-to-lambda': Lambda
|
};
|
||||||
},
|
|
||||||
watch: [],
|
|
||||||
routes: {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `prepareCache`
|
### `shouldServe()`
|
||||||
|
|
||||||
An **optional** exported function that is equivalent to [`build`](#build), but it executes the instructions necessary to prepare a cache for the next run.
|
An **optional** exported function that is only used by `vercel dev` in [Vercel
|
||||||
|
CLI](https://vercel.com/download) and indicates whether a
|
||||||
|
[Runtime](https://vercel.com/docs/runtimes) wants to be responsible for responding
|
||||||
|
to a certain request path.
|
||||||
|
|
||||||
```js
|
**Example:**
|
||||||
prepareCache({
|
|
||||||
files: Files,
|
|
||||||
entrypoint: String,
|
|
||||||
workPath: String,
|
|
||||||
cachePath: String,
|
|
||||||
config: Object
|
|
||||||
}) : Files cacheOutput
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are using TypeScript, you can import the types for each of these functions by using the following:
|
```typescript
|
||||||
|
import { ShouldServeOptions } from '@vercel/build-utils';
|
||||||
|
|
||||||
```ts
|
export async function shouldServe(options: ShouldServeOptions) {
|
||||||
import { PrepareCacheOptions } from '@now/build-utils'
|
// Determine whether or not the Runtime should respond to the request path here…
|
||||||
|
|
||||||
export prepareCache(options: PrepareCacheOptions) {
|
return options.requestPath === options.entrypoint;
|
||||||
return { 'path-to-file': File }
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `shouldServe`
|
If this function is not defined, Vercel CLI will use the [default implementation](https://github.com/vercel/vercel/blob/52994bfe26c5f4f179bdb49783ee57ce19334631/packages/now-build-utils/src/should-serve.ts).
|
||||||
|
|
||||||
An **optional** exported function that is only used by `now dev` in [Now CLI](https:///download) and indicates whether a [Runtime](https://vercel.com/docs/runtimes) wants to be responsible for building a certain request path.
|
### `startDevServer()`
|
||||||
|
|
||||||
```js
|
An **optional** exported function that is only used by `vercel dev` in [Vercel
|
||||||
shouldServe({
|
CLI](https://vercel.com/download). If this function is defined, Vercel CLI will
|
||||||
entrypoint: String,
|
**not** invoke the `build()` function, and instead invoke this function for every
|
||||||
files: Files,
|
HTTP request. It is an opportunity to provide an optimized development experience
|
||||||
config: Object,
|
rather than going through the entire `build()` process that is used in production.
|
||||||
requestPath: String,
|
|
||||||
workPath: String
|
|
||||||
}) : Boolean
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are using TypeScript, you can import the types for each of these functions by using the following:
|
This function is invoked _once per HTTP request_ and is expected to spawn a child
|
||||||
|
process which creates an HTTP server that will execute the entrypoint code when
|
||||||
|
an HTTP request is received. This child process is _single-serve_ (only used for
|
||||||
|
a single HTTP request). After the HTTP response is complete, `vercel dev` sends
|
||||||
|
a shut down signal to the child process.
|
||||||
|
|
||||||
```ts
|
The `startDevServer()` function returns an object with the `port` number that the
|
||||||
import { ShouldServeOptions } from '@now/build-utils'
|
child process' HTTP server is listening on (which should be an [ephemeral
|
||||||
|
port](https://stackoverflow.com/a/28050404/376773)) as well as the child process'
|
||||||
|
Process ID, which `vercel dev` uses to send the shut down signal to.
|
||||||
|
|
||||||
export shouldServe(options: ShouldServeOptions) {
|
> **Hint:** To determine which ephemeral port the child process is listening on,
|
||||||
return Boolean
|
> some form of [IPC](https://en.wikipedia.org/wiki/Inter-process_communication) is
|
||||||
|
> required. For example, in `@vercel/go` the child process writes the port number
|
||||||
|
> to [_file descriptor 3_](https://en.wikipedia.org/wiki/File_descriptor), which is read by the `startDevServer()` function
|
||||||
|
> implementation.
|
||||||
|
|
||||||
|
It may also return `null` to opt-out of this behavior for a particular request
|
||||||
|
path or entrypoint.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { spawn } from 'child_process';
|
||||||
|
import { StartDevServerOptions } from '@vercel/build-utils';
|
||||||
|
|
||||||
|
export async function startDevServer(options: StartDevServerOptions) {
|
||||||
|
// Create a child process which will create an HTTP server.
|
||||||
|
//
|
||||||
|
// Note: `my-runtime-dev-server` is an example dev server program name.
|
||||||
|
// Your implementation will spawn a different program specific to your runtime.
|
||||||
|
const child = spawn('my-runtime-dev-server', [options.entrypoint], {
|
||||||
|
stdio: ['ignore', 'inherit', 'inherit', 'pipe'],
|
||||||
|
});
|
||||||
|
|
||||||
|
// In this example, the child process will write the port number to FD 3…
|
||||||
|
const portPipe = child.stdio[3];
|
||||||
|
const childPort = await new Promise(resolve => {
|
||||||
|
portPipe.setEncoding('utf8');
|
||||||
|
portPipe.once('data', data => {
|
||||||
|
resolve(Number(data));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return { pid: child.pid, port: childPort };
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If this method is not defined, Now CLI will default to [this function](https://github.com/zeit/now/blob/52994bfe26c5f4f179bdb49783ee57ce19334631/packages/now-build-utils/src/should-serve.ts).
|
|
||||||
|
|
||||||
### Runtime Options
|
|
||||||
|
|
||||||
The exported functions [`analyze`](#analyze), [`build`](#build), and [`prepareCache`](#preparecache) receive one argument with the following properties.
|
|
||||||
|
|
||||||
**Properties:**
|
|
||||||
|
|
||||||
- `files`: All source files of the project as a [Files](#files) data structure.
|
|
||||||
- `entrypoint`: Name of entrypoint file for this particular build job. Value `files[entrypoint]` is guaranteed to exist and be a valid [File](#files) reference. `entrypoint` is always a discrete file and never a glob, since globs are expanded into separate builds at deployment time.
|
|
||||||
- `workPath`: A writable temporary directory where you are encouraged to perform your build process. This directory will be populated with the restored cache from the previous run (if any) for [`analyze`](#analyze) and [`build`](#build).
|
|
||||||
- `cachePath`: A writable temporary directory where you can build a cache for the next run. This is only passed to `prepareCache`.
|
|
||||||
- `config`: An arbitrary object passed from by the user in the [Build definition](#defining-the-build-step) in `vercel.json`.
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
|
|
||||||
Check out our [Node.js Runtime](https://github.com/zeit/now/tree/master/packages/now-node), [Go Runtime](https://github.com/zeit/now/tree/master/packages/now-go), [Python Runtime](https://github.com/zeit/now/tree/master/packages/now-python) or [Ruby Runtime](https://github.com/zeit/now/tree/master/packages/now-ruby) for examples of how to build one.
|
|
||||||
|
|
||||||
## Technical Details
|
|
||||||
|
|
||||||
### Execution Context
|
### Execution Context
|
||||||
|
|
||||||
A [Serverless Function](https://vercel.com/docs/v2/serverless-functions/introduction) is created where the Runtime logic is executed. The lambda is run using the Node.js 8 runtime. A brand new sandbox is created for each deployment, for security reasons. The sandbox is cleaned up between executions to ensure no lingering temporary files are shared from build to build.
|
- Runtimes are executed in a Linux container that closely matches the Servereless Function runtime environment.
|
||||||
|
- The Runtime code is executed using Node.js version **12.x**.
|
||||||
|
- A brand new sandbox is created for each deployment, for security reasons.
|
||||||
|
- The sandbox is cleaned up between executions to ensure no lingering temporary files are shared from build to build.
|
||||||
|
|
||||||
All the APIs you export ([`analyze`](#analyze), [`build`](#build) and [`prepareCache`](#preparecache)) are not guaranteed to be run in the same process, but the filesystem we expose (e.g.: `workPath` and the results of calling [`getWriteableDirectory`](#getWriteableDirectory) ) is retained.
|
All the APIs you export ([`analyze()`](#analyze), [`build()`](#build),
|
||||||
|
[`prepareCache()`](#preparecache), etc.) are not guaranteed to be run in the
|
||||||
|
same process, but the filesystem we expose (e.g.: `workPath` and the results
|
||||||
|
of calling [`getWritableDirectory`](#getWritableDirectory) ) is retained.
|
||||||
|
|
||||||
If you need to share state between those steps, use the filesystem.
|
If you need to share state between those steps, use the filesystem.
|
||||||
|
|
||||||
@@ -171,14 +218,14 @@ The env and secrets specified by the user as `build.env` are passed to the Runti
|
|||||||
|
|
||||||
### Utilities as peerDependencies
|
### Utilities as peerDependencies
|
||||||
|
|
||||||
When you publish your Runtime to npm, make sure to not specify `@now/build-utils` (as seen below in the API definitions) as a dependency, but rather as part of `peerDependencies`.
|
When you publish your Runtime to npm, make sure to not specify `@vercel/build-utils` (as seen below in the API definitions) as a dependency, but rather as part of `peerDependencies`.
|
||||||
|
|
||||||
## Types
|
## `@vercel/build-utils` Types
|
||||||
|
|
||||||
### `Files`
|
### `Files`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { File } from '@now/build-utils';
|
import { File } from '@vercel/build-utils';
|
||||||
type Files = { [filePath: string]: File };
|
type Files = { [filePath: string]: File };
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -188,7 +235,7 @@ When used as an input, the `Files` object will only contain `FileRefs`. When `Fi
|
|||||||
|
|
||||||
An example of a valid output `Files` object is:
|
An example of a valid output `Files` object is:
|
||||||
|
|
||||||
```json
|
```javascript
|
||||||
{
|
{
|
||||||
"index.html": FileRef,
|
"index.html": FileRef,
|
||||||
"api/index.js": Lambda
|
"api/index.js": Lambda
|
||||||
@@ -199,8 +246,8 @@ An example of a valid output `Files` object is:
|
|||||||
|
|
||||||
This is an abstract type that can be imported if you are using TypeScript.
|
This is an abstract type that can be imported if you are using TypeScript.
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { File } from '@now/build-utils';
|
import { File } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
Valid `File` types include:
|
Valid `File` types include:
|
||||||
@@ -211,71 +258,71 @@ Valid `File` types include:
|
|||||||
|
|
||||||
### `FileRef`
|
### `FileRef`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { FileRef } from '@now/build-utils';
|
import { FileRef } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a [JavaScript class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract file instance stored in our platform, based on the file identifier string (its checksum). When a `Files` object is passed as an input to `analyze` or `build`, all its values will be instances of `FileRef`.
|
This is a [class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract file instance stored in our platform, based on the file identifier string (its checksum). When a `Files` object is passed as an input to `analyze` or `build`, all its values will be instances of `FileRef`.
|
||||||
|
|
||||||
**Properties:**
|
**Properties:**
|
||||||
|
|
||||||
- `mode : Number` file mode
|
- `mode: Number` file mode
|
||||||
- `digest : String` a checksum that represents the file
|
- `digest: String` a checksum that represents the file
|
||||||
|
|
||||||
**Methods:**
|
**Methods:**
|
||||||
|
|
||||||
- `toStream() : Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
- `toStream(): Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
||||||
|
|
||||||
### `FileFsRef`
|
### `FileFsRef`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { FileFsRef } from '@now/build-utils';
|
import { FileFsRef } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a [JavaScript class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract instance of a file present in the filesystem that the build process is executing in.
|
This is a [class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract instance of a file present in the filesystem that the build process is executing in.
|
||||||
|
|
||||||
**Properties:**
|
**Properties:**
|
||||||
|
|
||||||
- `mode : Number` file mode
|
- `mode: Number` file mode
|
||||||
- `fsPath : String` the absolute path of the file in file system
|
- `fsPath: String` the absolute path of the file in file system
|
||||||
|
|
||||||
**Methods:**
|
**Methods:**
|
||||||
|
|
||||||
- `static async fromStream({ mode : Number, stream : Stream, fsPath : String }) : FileFsRef` creates an instance of a [FileFsRef](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) from `Stream`, placing file at `fsPath` with `mode`
|
- `static async fromStream({ mode: Number, stream: Stream, fsPath: String }): FileFsRef` creates an instance of a [FileFsRef](#FileFsRef) from `Stream`, placing file at `fsPath` with `mode`
|
||||||
- `toStream() : Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
- `toStream(): Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
||||||
|
|
||||||
### `FileBlob`
|
### `FileBlob`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { FileBlob } from '@now/build-utils';
|
import { FileBlob } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a [JavaScript class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract instance of a file present in memory.
|
This is a [class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents an abstract instance of a file present in memory.
|
||||||
|
|
||||||
**Properties:**
|
**Properties:**
|
||||||
|
|
||||||
- `mode : Number` file mode
|
- `mode: Number` file mode
|
||||||
- `data : String | Buffer` the body of the file
|
- `data: String | Buffer` the body of the file
|
||||||
|
|
||||||
**Methods:**
|
**Methods:**
|
||||||
|
|
||||||
- `static async fromStream({ mode : Number, stream : Stream }) :FileBlob` creates an instance of a [FileBlob](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) from [`Stream`](https://nodejs.org/api/stream.html) with `mode`
|
- `static async fromStream({ mode: Number, stream: Stream }): FileBlob` creates an instance of a [FileBlob](#FileBlob) from [`Stream`](https://nodejs.org/api/stream.html) with `mode`
|
||||||
- `toStream() : Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
- `toStream(): Stream` creates a [Stream](https://nodejs.org/api/stream.html) of the file body
|
||||||
|
|
||||||
### `Lambda`
|
### `Lambda`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { Lambda } from '@now/build-utils';
|
import { Lambda } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a [JavaScript class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), called a Serverless Function, that can be created by supplying `files`, `handler`, `runtime`, and `environment` as an object to the [`createLambda`](#createlambda) helper. The instances of this class should not be created directly. Instead, invoke the [`createLambda`](#createlambda) helper function.
|
This is a [class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) that represents a Serverless Function. An instance can be created by supplying `files`, `handler`, `runtime`, and `environment` as an object to the [`createLambda`](#createlambda) helper. The instances of this class should not be created directly. Instead, invoke the [`createLambda`](#createlambda) helper function.
|
||||||
|
|
||||||
**Properties:**
|
**Properties:**
|
||||||
|
|
||||||
- `files : Files` the internal filesystem of the lambda
|
- `files: Files` the internal filesystem of the lambda
|
||||||
- `handler : String` path to handler file and (optionally) a function name it exports
|
- `handler: String` path to handler file and (optionally) a function name it exports
|
||||||
- `runtime : LambdaRuntime` the name of the lambda runtime
|
- `runtime: LambdaRuntime` the name of the lambda runtime
|
||||||
- `environment : Object` key-value map of handler-related (aside of those passed by user) environment variables
|
- `environment: Object` key-value map of handler-related (aside of those passed by user) environment variables
|
||||||
|
|
||||||
### `LambdaRuntime`
|
### `LambdaRuntime`
|
||||||
|
|
||||||
@@ -291,22 +338,22 @@ This is an abstract enumeration type that is implemented by one of the following
|
|||||||
- `ruby2.5`
|
- `ruby2.5`
|
||||||
- `provided`
|
- `provided`
|
||||||
|
|
||||||
## JavaScript API
|
## `@vercel/build-utils` Helper Functions
|
||||||
|
|
||||||
The following is exposed by `@now/build-utils` to simplify the process of writing Runtimes, manipulating the file system, using the above types, etc.
|
The following is exposed by `@vercel/build-utils` to simplify the process of writing Runtimes, manipulating the file system, using the above types, etc.
|
||||||
|
|
||||||
### `createLambda`
|
### `createLambda()`
|
||||||
|
|
||||||
Signature: `createLambda(Object spec) : Lambda`
|
Signature: `createLambda(Object spec): Lambda`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { createLambda } from '@now/build-utils';
|
import { createLambda } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
Constructor for the [`Lambda`](#lambda) type.
|
Constructor for the [`Lambda`](#lambda) type.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const { createLambda, FileBlob } = require('@now/build-utils');
|
const { createLambda, FileBlob } = require('@vercel/build-utils');
|
||||||
await createLambda({
|
await createLambda({
|
||||||
runtime: 'nodejs8.10',
|
runtime: 'nodejs8.10',
|
||||||
handler: 'index.main',
|
handler: 'index.main',
|
||||||
@@ -316,30 +363,34 @@ await createLambda({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
### `download`
|
### `download()`
|
||||||
|
|
||||||
Signature: `download() : Files`
|
Signature: `download(): Files`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { download } from '@now/build-utils';
|
import { download } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This utility allows you to download the contents of a [`Files`](#files) data structure, therefore creating the filesystem represented in it.
|
This utility allows you to download the contents of a [`Files`](#files) data
|
||||||
|
structure, therefore creating the filesystem represented in it.
|
||||||
|
|
||||||
Since `Files` is an abstract way of representing files, you can think of `download` as a way of making that virtual filesystem _real_.
|
Since `Files` is an abstract way of representing files, you can think of
|
||||||
|
`download()` as a way of making that virtual filesystem _real_.
|
||||||
|
|
||||||
If the **optional** `meta` property is passed (the argument for [build](#build)), only the files that have changed are downloaded. This is decided using `filesRemoved` and `filesChanged` inside that object.
|
If the **optional** `meta` property is passed (the argument for
|
||||||
|
[`build()`](#build)), only the files that have changed are downloaded.
|
||||||
|
This is decided using `filesRemoved` and `filesChanged` inside that object.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
await download(files, workPath, meta);
|
await download(files, workPath, meta);
|
||||||
```
|
```
|
||||||
|
|
||||||
### `glob`
|
### `glob()`
|
||||||
|
|
||||||
Signature: `glob() : Files`
|
Signature: `glob(): Files`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { glob } from '@now/build-utils';
|
import { glob } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
This utility allows you to _scan_ the filesystem and return a [`Files`](#files) representation of the matched glob search string. It can be thought of as the reverse of [`download`](#download).
|
This utility allows you to _scan_ the filesystem and return a [`Files`](#files) representation of the matched glob search string. It can be thought of as the reverse of [`download`](#download).
|
||||||
@@ -347,7 +398,7 @@ This utility allows you to _scan_ the filesystem and return a [`Files`](#files)
|
|||||||
The following trivial example downloads everything to the filesystem, only to return it back (therefore just re-creating the passed-in [`Files`](#files)):
|
The following trivial example downloads everything to the filesystem, only to return it back (therefore just re-creating the passed-in [`Files`](#files)):
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const { glob, download } = require('@now/build-utils')
|
const { glob, download } = require('@vercel/build-utils')
|
||||||
|
|
||||||
exports.build = ({ files, workPath }) => {
|
exports.build = ({ files, workPath }) => {
|
||||||
await download(files, workPath)
|
await download(files, workPath)
|
||||||
@@ -355,28 +406,28 @@ exports.build = ({ files, workPath }) => {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### `getWriteableDirectory`
|
### `getWritableDirectory()`
|
||||||
|
|
||||||
Signature: `getWriteableDirectory() : String`
|
Signature: `getWritableDirectory(): String`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { getWriteableDirectory } from '@now/build-utils';
|
import { getWritableDirectory } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
In some occasions, you might want to write to a temporary directory.
|
In some occasions, you might want to write to a temporary directory.
|
||||||
|
|
||||||
### `rename`
|
### `rename()`
|
||||||
|
|
||||||
Signature: `rename(Files) : Files`
|
Signature: `rename(Files, Function): Files`
|
||||||
|
|
||||||
```ts
|
```typescript
|
||||||
import { rename } from '@now/build-utils';
|
import { rename } from '@vercel/build-utils';
|
||||||
```
|
```
|
||||||
|
|
||||||
Renames the keys of the [`Files`](#files) object, which represent the paths. For example, to remove the `*.go` suffix you can use:
|
Renames the keys of the [`Files`](#files) object, which represent the paths. For example, to remove the `*.go` suffix you can use:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const rename = require('@now/build-utils')
|
const rename = require('@vercel/build-utils')
|
||||||
const originalFiles = { 'one.go': fileFsRef1, 'two.go': fileFsRef2 }
|
const originalFiles = { 'one.go': fileFsRef1, 'two.go': fileFsRef2 }
|
||||||
const renamedFiles = rename(originalFiles, path => path.replace(/\.go$/, '')
|
const renamedFiles = rename(originalFiles, path => path.replace(/\.go$/, '')
|
||||||
```
|
```
|
||||||
|
|||||||
2
LICENSE
@@ -175,7 +175,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
Copyright 2017 ZEIT, Inc.
|
Copyright 2017 Vercel, Inc.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
10
README.md
@@ -1,14 +1,18 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
|
<a href="https://vercel.com">
|
||||||
<img src="https://assets.vercel.com/image/upload/v1588805858/repositories/vercel/logo.png" height="96">
|
<img src="https://assets.vercel.com/image/upload/v1588805858/repositories/vercel/logo.png" height="96">
|
||||||
<h3 align="center">Vercel</h3>
|
<h3 align="center">Vercel</h3>
|
||||||
|
</a>
|
||||||
<p align="center">Develop. Preview. Ship.</p>
|
<p align="center">Develop. Preview. Ship.</p>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[](https://github.com/zeit/now/actions?workflow=CI)
|
[](https://github.com/vercel/vercel/actions?workflow=CI)
|
||||||
[](https://github.com/zeit/now/discussions)
|
[](https://github.com/vercel/vercel/discussions)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
Vercel is the optimal workflow for frontend teams. All-in-one: Static and Jamstack deployment, Serverless Functions, and Global CDN.
|
||||||
|
|
||||||
Get started by [Importing a Git Project](https://vercel.com/import) and use `git push` to deploy. Alternatively, you can [install Vercel CLI](https://vercel.com/download).
|
Get started by [Importing a Git Project](https://vercel.com/import) and use `git push` to deploy. Alternatively, you can [install Vercel CLI](https://vercel.com/download).
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
@@ -27,4 +31,4 @@ As always, you should use `yarn test-unit` to run the tests and see if your chan
|
|||||||
|
|
||||||
## How to Create a Release
|
## How to Create a Release
|
||||||
|
|
||||||
If you have write access to this repository, you can read more about how to publish a release [here](https://github.com/zeit/now/wiki/Creating-a-Release).
|
If you have write access to this repository, you can read more about how to publish a release [here](https://github.com/vercel/vercel/wiki/Creating-a-Release).
|
||||||
|
|||||||
@@ -51,7 +51,8 @@ export async function getGitHubRepoInfo(repo: Repo) {
|
|||||||
data.subdir = repo.path.slice(subdirPath.length).split('/');
|
data.subdir = repo.path.slice(subdirPath.length).split('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.id === 'zeit/now' && data.subdir && data.subdir[0] === 'examples') {
|
if (data.id === 'vercel/vercel' && data.subdir && data.subdir[0] === 'examples') {
|
||||||
|
|
||||||
// from our examples, add `homepage` and `description` fields
|
// from our examples, add `homepage` and `description` fields
|
||||||
const example = data.subdir[1];
|
const example = data.subdir[1];
|
||||||
const exampleList = await getExampleList();
|
const exampleList = await getExampleList();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { errorHandler } from './error-handler';
|
import { errorHandler } from './error-handler';
|
||||||
|
|
||||||
type Handler = (req: NowRequest, res: NowResponse) => Promise<any>;
|
type Handler = (req: NowRequest, res: NowResponse) => Promise<any>;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import tar from 'tar-fs';
|
import tar from 'tar-fs';
|
||||||
import { extract } from '../../_lib/examples/extract';
|
import { extract } from '../../_lib/examples/extract';
|
||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from '../../_lib/util/with-api-handler';
|
import { withApiHandler } from '../../_lib/util/with-api-handler';
|
||||||
|
|
||||||
const TMP_DIR = '/tmp';
|
const TMP_DIR = '/tmp';
|
||||||
@@ -15,8 +15,8 @@ function notFound(res: NowResponse, message: string) {
|
|||||||
return res.status(404).send({
|
return res.status(404).send({
|
||||||
error: {
|
error: {
|
||||||
code: 'not_found',
|
code: 'not_found',
|
||||||
message
|
message,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,10 @@ function streamToBuffer(stream: any) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export default withApiHandler(async function(req: NowRequest, res: NowResponse) {
|
export default withApiHandler(async function (
|
||||||
|
req: NowRequest,
|
||||||
|
res: NowResponse
|
||||||
|
) {
|
||||||
const ext = '.tar.gz';
|
const ext = '.tar.gz';
|
||||||
const { segment = '' } = req.query;
|
const { segment = '' } = req.query;
|
||||||
|
|
||||||
@@ -45,8 +48,8 @@ export default withApiHandler(async function(req: NowRequest, res: NowResponse)
|
|||||||
|
|
||||||
const example = segment.slice(0, -ext.length);
|
const example = segment.slice(0, -ext.length);
|
||||||
|
|
||||||
await extract('https://github.com/zeit/now/archive/master.zip', TMP_DIR);
|
await extract('https://github.com/vercel/vercel/archive/master.zip', TMP_DIR);
|
||||||
const directory = `${TMP_DIR}/now-master/examples/${example}`;
|
const directory = `${TMP_DIR}/vercel-master/examples/${example}`;
|
||||||
|
|
||||||
if (!isDirectory(directory)) {
|
if (!isDirectory(directory)) {
|
||||||
return notFound(res, `Example '${example}' was not found.`);
|
return notFound(res, `Example '${example}' was not found.`);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
// A proxy to get the basic info of an existing github/gitlab repo:
|
// A proxy to get the basic info of an existing github/gitlab repo:
|
||||||
// GET /info?repo=zeit/micro
|
// GET /info?repo=vercel/micro
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import parseGitUrl from 'parse-github-url';
|
import parseGitUrl from 'parse-github-url';
|
||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
import { getGitHubRepoInfo } from '../_lib/examples/github-repo-info';
|
import { getGitHubRepoInfo } from '../_lib/examples/github-repo-info';
|
||||||
import { getGitLabRepoInfo } from '../_lib/examples/gitlab-repo-info';
|
import { getGitLabRepoInfo } from '../_lib/examples/gitlab-repo-info';
|
||||||
|
|
||||||
export default withApiHandler(async function(
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: NowRequest,
|
||||||
res: NowResponse
|
res: NowResponse
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { getExampleList } from '../_lib/examples/example-list';
|
import { getExampleList } from '../_lib/examples/example-list';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
|
|
||||||
export default withApiHandler(async function(
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: NowRequest,
|
||||||
res: NowResponse
|
res: NowResponse
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { extract } from '../_lib/examples/extract';
|
import { extract } from '../_lib/examples/extract';
|
||||||
import { summary } from '../_lib/examples/summary';
|
import { summary } from '../_lib/examples/summary';
|
||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { mapOldToNew } from '../_lib/examples/map-old-to-new';
|
import { mapOldToNew } from '../_lib/examples/map-old-to-new';
|
||||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||||
|
|
||||||
export default withApiHandler(async function(
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: NowRequest,
|
||||||
res: NowResponse
|
res: NowResponse
|
||||||
) {
|
) {
|
||||||
await extract('https://github.com/zeit/now/archive/master.zip', '/tmp');
|
await extract('https://github.com/vercel/vercel/archive/master.zip', '/tmp');
|
||||||
const exampleList = summary('/tmp/now-master/examples');
|
const exampleList = summary('/tmp/vercel-master/examples');
|
||||||
|
|
||||||
const existingExamples = Array.from(exampleList).map(key => ({
|
const existingExamples = Array.from(exampleList).map(key => ({
|
||||||
name: key,
|
name: key,
|
||||||
|
|||||||
@@ -1,11 +1,17 @@
|
|||||||
import { NowRequest, NowResponse } from '@now/node';
|
import { NowRequest, NowResponse } from '@vercel/node';
|
||||||
import { withApiHandler } from './_lib/util/with-api-handler';
|
import { withApiHandler } from './_lib/util/with-api-handler';
|
||||||
import frameworkList, { Framework } from '../packages/frameworks';
|
import _frameworks, { Framework } from '../packages/frameworks';
|
||||||
|
|
||||||
const frameworks = (frameworkList as Framework[]).map(frameworkItem => {
|
const frameworks = (_frameworks as Framework[])
|
||||||
|
.sort(
|
||||||
|
(a, b) =>
|
||||||
|
(a.sort || Number.MAX_SAFE_INTEGER) - (b.sort || Number.MAX_SAFE_INTEGER)
|
||||||
|
)
|
||||||
|
.map(frameworkItem => {
|
||||||
const framework = {
|
const framework = {
|
||||||
...frameworkItem,
|
...frameworkItem,
|
||||||
detectors: undefined,
|
detectors: undefined,
|
||||||
|
sort: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (framework.logo) {
|
if (framework.logo) {
|
||||||
@@ -13,14 +19,17 @@ const frameworks = (frameworkList as Framework[]).map(frameworkItem => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return framework;
|
return framework;
|
||||||
});
|
});
|
||||||
|
|
||||||
export default withApiHandler(async function(
|
export default withApiHandler(async function (
|
||||||
req: NowRequest,
|
req: NowRequest,
|
||||||
res: NowResponse
|
res: NowResponse
|
||||||
) {
|
) {
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||||
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
||||||
res.setHeader('Access-Control-Allow-Headers', 'Authorization, Accept, Content-Type');
|
res.setHeader(
|
||||||
|
'Access-Control-Allow-Headers',
|
||||||
|
'Authorization, Accept, Content-Type'
|
||||||
|
);
|
||||||
return res.status(200).json(frameworks);
|
return res.status(200).json(frameworks);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "api",
|
"name": "api",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"description": "API for the zeit/now repo",
|
"description": "API for the vercel/vercel repo",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "yarn --cwd .. && node ../utils/run.js build all"
|
"build": "yarn --cwd .. && node ../utils/run.js build all"
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
"node-fetch": "2.6.0",
|
"node-fetch": "2.6.0",
|
||||||
"parse-github-url": "1.0.2",
|
"parse-github-url": "1.0.2",
|
||||||
"tar-fs": "2.0.0",
|
"tar-fs": "2.0.0",
|
||||||
"typescript": "3.7.4",
|
|
||||||
"unzip-stream": "0.3.0"
|
"unzip-stream": "0.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@now/node": "1.3.3",
|
|
||||||
"@types/node": "13.1.4",
|
"@types/node": "13.1.4",
|
||||||
"@types/node-fetch": "2.5.4"
|
"@types/node-fetch": "2.5.4",
|
||||||
|
"@vercel/node": "1.7.2",
|
||||||
|
"typescript": "3.9.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,6 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@now/node@1.3.3":
|
|
||||||
version "1.3.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@now/node/-/node-1.3.3.tgz#5407cb6a730d4dd9b6b6b0bc4a316f29086c9feb"
|
|
||||||
integrity sha512-s1qajtQttWhhSs1k6FX0/6eTFYFUplzultrQeKfOPMoYzzz6OxDq5qrQ3elpsGlZlDVmO+x+JOJ7yad+3yBgpg==
|
|
||||||
dependencies:
|
|
||||||
"@types/node" "*"
|
|
||||||
|
|
||||||
"@sentry/apm@5.11.1":
|
"@sentry/apm@5.11.1":
|
||||||
version "5.11.1"
|
version "5.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/apm/-/apm-5.11.1.tgz#cc89fa4150056fbf009f92eca94fccc3980db34e"
|
resolved "https://registry.yarnpkg.com/@sentry/apm/-/apm-5.11.1.tgz#cc89fa4150056fbf009f92eca94fccc3980db34e"
|
||||||
@@ -141,11 +134,25 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@vercel/node@1.7.2":
|
||||||
|
version "1.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.7.2.tgz#85cb8aac661c02dfef6fe752740f5b162e90767b"
|
||||||
|
integrity sha512-XV5lrLC+K/cxsaFj8H2OoGu1zliOqnxcrOnPInI8HmQjR/Tztt+0nzgpt+7sx8wXcrib0Nu7lK303jP7VjSETw==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
ts-node "8.9.1"
|
||||||
|
typescript "3.9.3"
|
||||||
|
|
||||||
agent-base@5:
|
agent-base@5:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c"
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c"
|
||||||
integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
|
integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
|
||||||
|
|
||||||
|
arg@^4.1.0:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||||
|
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||||
|
|
||||||
binary@^0.3.0:
|
binary@^0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
|
resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
|
||||||
@@ -161,6 +168,11 @@ bl@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
readable-stream "^3.0.1"
|
readable-stream "^3.0.1"
|
||||||
|
|
||||||
|
buffer-from@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
||||||
|
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
|
||||||
|
|
||||||
buffers@~0.1.1:
|
buffers@~0.1.1:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
|
resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
|
||||||
@@ -229,6 +241,11 @@ defer-to-connect@^1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz#88ae694b93f67b81815a2c8c769aef6574ac8f2f"
|
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz#88ae694b93f67b81815a2c8c769aef6574ac8f2f"
|
||||||
integrity sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==
|
integrity sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==
|
||||||
|
|
||||||
|
diff@^4.0.1:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||||
|
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||||
|
|
||||||
duplexer3@^0.1.4:
|
duplexer3@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
||||||
@@ -313,6 +330,11 @@ lru_map@^0.3.3:
|
|||||||
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
|
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
|
||||||
integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=
|
integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=
|
||||||
|
|
||||||
|
make-error@^1.1.1:
|
||||||
|
version "1.3.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||||
|
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||||
|
|
||||||
mimic-response@^1.0.0:
|
mimic-response@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
|
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
|
||||||
@@ -396,6 +418,19 @@ safe-buffer@~5.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
||||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
||||||
|
|
||||||
|
source-map-support@^0.5.17:
|
||||||
|
version "0.5.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
|
||||||
|
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
|
||||||
|
dependencies:
|
||||||
|
buffer-from "^1.0.0"
|
||||||
|
source-map "^0.6.0"
|
||||||
|
|
||||||
|
source-map@^0.6.0:
|
||||||
|
version "0.6.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
string_decoder@^1.1.1:
|
string_decoder@^1.1.1:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||||
@@ -434,6 +469,17 @@ to-readable-stream@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
|
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
|
||||||
integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=
|
integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=
|
||||||
|
|
||||||
|
ts-node@8.9.1:
|
||||||
|
version "8.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5"
|
||||||
|
integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==
|
||||||
|
dependencies:
|
||||||
|
arg "^4.1.0"
|
||||||
|
diff "^4.0.1"
|
||||||
|
make-error "^1.1.1"
|
||||||
|
source-map-support "^0.5.17"
|
||||||
|
yn "3.1.1"
|
||||||
|
|
||||||
tslib@^1.9.3:
|
tslib@^1.9.3:
|
||||||
version "1.10.0"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
|
||||||
@@ -444,10 +490,15 @@ type-fest@^0.8.0:
|
|||||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
||||||
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
||||||
|
|
||||||
typescript@3.7.4:
|
typescript@3.9.3:
|
||||||
version "3.7.4"
|
version "3.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.4.tgz#1743a5ec5fef6a1fa9f3e4708e33c81c73876c19"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
|
||||||
integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==
|
integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
|
||||||
|
|
||||||
|
typescript@3.9.6:
|
||||||
|
version "3.9.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a"
|
||||||
|
integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==
|
||||||
|
|
||||||
unzip-stream@0.3.0:
|
unzip-stream@0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
@@ -466,3 +517,8 @@ wrappy@1:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||||
|
|
||||||
|
yn@3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||||
|
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||||
|
|||||||
@@ -33,5 +33,5 @@ When passing multiple `--regions` as a CLI parameter,
|
|||||||
make sure they're separated by a comma (`,`). For example:
|
make sure they're separated by a comma (`,`). For example:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
now --regions sfo,bru,gru
|
vercel --regions sfo,bru,gru
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,19 +2,17 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
The domain you supplied cannot be verified using either the intended set of nameservers or the given verification TXT record.
|
The domain you supplied cannot be verified using the intended nameservers.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Way to Fix It
|
||||||
|
|
||||||
Apply the intended set of nameservers to your domain or add the given TXT verification record through your domain provider.
|
Apply the intended set of nameservers to your domain.
|
||||||
|
|
||||||
You can retrieve both the intended nameservers and TXT verification record for the domain you wish to verify by running `now domains inspect <domain>`.
|
You can retrieve both the intended nameservers and TXT verification record for the domain you wish to verify by running `vercel domains inspect <domain>`.
|
||||||
|
|
||||||
When you have added either verification method to your domain, you can run `now domains verify <domain>` again to complete verification for your domain.
|
|
||||||
|
|
||||||
Vercel will also automatically check periodically that your domain has been verified and automatically mark it as such if we detect either verification method on the domain.
|
Vercel will also automatically check periodically that your domain has been verified and automatically mark it as such if we detect either verification method on the domain.
|
||||||
|
|
||||||
If you would not like to verify your domain, you can remove it from your account using `now domains rm <domain>`.
|
If you would not like to verify your domain, you can remove it from your account using `vercel domains rm <domain>`.
|
||||||
|
|
||||||
#### Resources
|
#### Resources
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ You specified the `--env` or `-e` flag with the value of a secret. However, the
|
|||||||
Make sure to specify the environment variable and secret like that:
|
Make sure to specify the environment variable and secret like that:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
now -e VARIABLE_NAME=@secret-name
|
vercel -e VARIABLE_NAME=@secret-name
|
||||||
```
|
```
|
||||||
|
|
||||||
In addition, ensure that the secret (`@secret-name` in the example above) exists in the current scope (the team or user account that you're using).
|
In addition, ensure that the secret (`@secret-name` in the example above) exists in the current scope (the team or user account that you're using).
|
||||||
|
|
||||||
You can run `now switch` or `--scope` to switch to a different team or user.
|
You can run `vercel switch` or `--scope` to switch to a different team or user.
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ You specified a path as the value for the `--dotenv` flag, but the target of the
|
|||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Make sure the target file you've specified exists and is readable by Now CLI. In addition, please ensure that the filename starts with a dot (example: `.env`) - then it should work.
|
Make sure the target file you've specified exists and is readable by Vercel CLI. In addition, please ensure that the filename starts with a dot (example: `.env`) - then it should work.
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
You ran `now dev` inside a project that contains a `vercel.json` file with `env` or `build.env` properties that use [Now Secrets](https://vercel.com/docs/v2/build-step#environment-variables).
|
You ran `vercel dev` inside a project that contains a `vercel.json` file with `env` or `build.env` properties that use [Vercel Secrets](https://vercel.com/docs/v2/build-step#environment-variables).
|
||||||
|
|
||||||
In order to use environment variables in your project locally that have values defined using the Now Secrets format (e.g. `@my-secret-value`), you will need to provide the value as an environment variable using a `.env` or `.env.build` file.
|
In order to use environment variables in your project locally that have values defined using the Vercel Secrets format (e.g. `@my-secret-value`), you will need to provide the value as an environment variable using a `.env`.
|
||||||
|
|
||||||
We require this to ensure your app works as you intend it to, in the Now Dev environment, and to provide you with a way to mirror or separate private environment variables within your applications, for example when connecting to a database.
|
We require this to ensure your app works as you intend it to, in the development environment, and to provide you with a way to mirror or separate private environment variables within your applications, for example when connecting to a database.
|
||||||
|
|
||||||
Read below for how to address this error.
|
Read below for how to address this error.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
The error message will list environment variables that are required and which file they are required to be included in (either `.env` or `.env.build`).
|
The error message will list environment variables that are required and which file they are required to be included in `.env`.
|
||||||
|
|
||||||
If the file does not exist yet, please create the file that the error message mentions and insert the missing environment variable into it.
|
If the file does not exist yet, please create the file that the error message mentions and insert the missing environment variable into it.
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ You specified the `--env` or `-e` flag and didn't add a name and value for the e
|
|||||||
Make sure to set the name and value of the variable like this:
|
Make sure to set the name and value of the variable like this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
now -e VARIABLE_NAME="VALUE"
|
vercel -e VARIABLE_NAME="VALUE"
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also specify a environment variable that contains a secret:
|
You can also specify a environment variable that contains a secret:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
now -e VARIABLE_NAME=@secret-name
|
vercel -e VARIABLE_NAME=@secret-name
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ The `--scope` flag was specified, but there's no value for it available.
|
|||||||
|
|
||||||
In order to make it work, you need to specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act or the username or ID of a user you'd like to act as.
|
In order to make it work, you need to specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act or the username or ID of a user you'd like to act as.
|
||||||
|
|
||||||
As an example, if your team URL is `https://vercel.com/teams/zeit`, you would set `--scope` to `zeit`.
|
As an example, if your team URL is `https://vercel.com/my-team`, you would set `--scope` to `my-team`.
|
||||||
|
|||||||
14
errors/next-functions-config-optimized-lambdas.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# `@vercel/next` Functions Config Optimized Lambdas Opt-out
|
||||||
|
|
||||||
|
#### Why This Warning Occurred
|
||||||
|
|
||||||
|
`@vercel/next` by default now bundles pages into optimized functions, minimizing bootup time and increasing overall application throughput.
|
||||||
|
When the `functions` config is added in `now.json` or `vercel.json`, it causes conflicts with this optimization, so it is opted-out.
|
||||||
|
|
||||||
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
|
Remove the `functions` config from your `now.json` or `vercel.json` to take advantage of this optimization.
|
||||||
|
|
||||||
|
### Useful Links
|
||||||
|
|
||||||
|
- [Functions Config Documentation](https://vercel.com/docs/configuration?query=functions#project/functions)
|
||||||
16
errors/next-legacy-routes-optimized-lambdas.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# `@vercel/next` Legacy Routes Optimized Lambdas Opt-out
|
||||||
|
|
||||||
|
#### Why This Warning Occurred
|
||||||
|
|
||||||
|
`@vercel/next` by default now bundles pages into optimized functions, minimizing bootup time and increasing overall application throughput.
|
||||||
|
When legacy `routes` are added in `now.json` or `vercel.json`, they cause conflicts with this optimization, so it is opted-out.
|
||||||
|
|
||||||
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
|
Migrate from using legacy `routes` to the new `rewrites`, `redirects`, and `headers` configurations in your `now.json` or `vercel.json` file or leverage them directly in your `next.config.js` with the built-in [custom routes support](https://github.com/zeit/next.js/issues/9081)
|
||||||
|
|
||||||
|
### Useful Links
|
||||||
|
|
||||||
|
- [Rewrites Documentation](https://vercel.com/docs/configuration?query=rewrites#project/rewrites)
|
||||||
|
- [Redirects Documentation](https://vercel.com/docs/configuration?query=rewrites#project/redirects)
|
||||||
|
- [Headers Documentation](https://vercel.com/docs/configuration?query=rewrites#project/headers)
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
You're running Now CLI in a non-terminal context and there are no credentials available. This means that Now CLI is not able to authenticate against our service.
|
You're running Vercel CLI in a non-terminal context and there are no credentials available. This means that Vercel CLI is not able to authenticate against our service.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
You tried to run a command that doesn't allow the `--token` flag (like `now switch`). This is not allowed because commands like these are influencing the configuration files.
|
You tried to run a command that doesn't allow the `--token` flag (like `vercel switch`). This is not allowed because commands like these are influencing the configuration files.
|
||||||
|
|
||||||
In turn, they would have to take the value of the `--token` flag into consideration (which is not a good idea, because flags in Now CLI should never change the configuration).
|
In turn, they would have to take the value of the `--token` flag into consideration (which is not a good idea, because flags in Vercel CLI should never change the configuration).
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act (as an example, if your team URL is `https://vercel.com/teams/zeit`, the value can be `zeit`) or the username or ID of a user you'd like to act as.
|
Specify a value for the `--scope` flag. This needs to be the slug or ID of the team as which you'd like to act (as an example, if your team URL is `https://vercel.com/my-team`, the value can be `my-team`) or the username or ID of a user you'd like to act as.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# `now dev` as `dev` script
|
# `vercel dev` as `dev` script
|
||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
The `package.json` file of the used project invokes `now dev` as `dev` script. This would cause `now dev` to recursively invoke itself.
|
The `package.json` file of the used project invokes `vercel dev` as `dev` script. This would cause `vercel dev` to recursively invoke itself.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ Legacy:
|
|||||||
Serverless:
|
Serverless:
|
||||||
|
|
||||||
- Minimal lambda size of `49Kb` (approximately)
|
- Minimal lambda size of `49Kb` (approximately)
|
||||||
- Uses Next.js build targets (`target: 'serverless'`) in `next.config.js`. [documentation](https://github.com/zeit/next.js#summary)
|
- Uses Next.js build targets (`target: 'serverless'`) in `next.config.js`. [documentation](https://github.com/vercel/next.js#summary)
|
||||||
- Does not make changes to your application dependencies
|
- Does not make changes to your application dependencies
|
||||||
- Does not load `next.config.js` ([as per the serverless target documentation](https://github.com/zeit/next.js#summary))
|
- Does not load `next.config.js` ([as per the serverless target documentation](https://github.com/vercel/next.js#summary))
|
||||||
- Runs `npm install`
|
- Runs `npm install`
|
||||||
- Runs `npm run now-build`
|
- Runs `npm run now-build`
|
||||||
- Does not run `npm install --production` as the output from the build is all that's needed to bundle lambdas.
|
- Does not run `npm install --production` as the output from the build is all that's needed to bundle lambdas.
|
||||||
@@ -69,4 +69,4 @@ module.exports = {
|
|||||||
|
|
||||||
### Useful Links
|
### Useful Links
|
||||||
|
|
||||||
- [Serverless target implementation](https://github.com/zeit/now-builders/pull/150)
|
- [Serverless target implementation](https://github.com/vercel/now-builders/pull/150)
|
||||||
|
|||||||
@@ -2,10 +2,15 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
This could be caused by a failure during the build or an incorrect output directory being configured for your Next.js project.
|
This could be caused by a misconfigured "Build Command" or "Output Directory" for your Next.js project.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Check for any build errors in the logs and ensure that the output directory setting is either not changed or is pointing to the location of the `.next` output folder (`distDir`).
|
In the Vercel dashboard, open your "Project Settings" and draw attention to "Build & Development Settings":
|
||||||
|
|
||||||
If you are running `next export` you should **not** need to customize the output directory to `out` since the builder automatically detects `next export` being run and uses the output from it.
|
1. Ensure that the "Build Command" setting is not changed, or that it calls `next build`. If this command is not changed but you are seeing this error, double check that your `build` script in `package.json` calls `next build`.
|
||||||
|
2. Ensure that the "Output Directory" setting is not changed. This value almost never needs to be configured, and is only necessary if you override `distDir` in `next.config.js`.
|
||||||
|
3. For `next export` users: **do not override the "Output Directory"**. Next.js automatically detects what folder you outputted `next export` to.
|
||||||
|
|
||||||
|
In rare scenarios, this error message can also be caused by a Next.js build failure (if your "Build Command" accidentally returns an exit code that is not 0).
|
||||||
|
Double check for any error messages above the Routes Manifest error, which may provide additional details.
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
# `@now/static-build` Failed to detect a server running
|
# `@vercel/static-build` Failed to detect a server running
|
||||||
|
|
||||||
#### Why This Warning Occurred
|
#### Why This Warning Occurred
|
||||||
|
|
||||||
When running `now dev`, the `@now/static-build` builder proxies relevant HTTP
|
When running `vercel dev`, the `@vercel/static-build` builder proxies relevant HTTP
|
||||||
requests to the server that is created by the `now-dev` script in the
|
requests to the server that is created by the `dev` script in the
|
||||||
`package.json` file.
|
`package.json` file.
|
||||||
|
|
||||||
In order for `now dev` to know which port the server is running on, the builder
|
In order for `vercel dev` to know which port the server is running on, the builder
|
||||||
is provided a `$PORT` environment variable that the server _must_ bind to. The
|
is provided a `$PORT` environment variable that the server _must_ bind to. The
|
||||||
error "Failed to detect a server running on port" is printed if the builder fails
|
error "Failed to detect a server running on port" is printed if the builder fails
|
||||||
to detect a server listening on that specific port within five minutes.
|
to detect a server listening on that specific port within five minutes.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Please ensure that your `now-dev` script binds the spawned development server on
|
Please ensure that your `dev` script binds the spawned development server on
|
||||||
the provided `$PORT` that the builder expects the server to bind to.
|
the provided `$PORT` that the builder expects the server to bind to.
|
||||||
|
|
||||||
For example, if you are using Gatsby, your `now-dev` script must use the `-p`
|
For example, if you are using Gatsby, your `dev` script must use the `-p`
|
||||||
(port) option to bind to the `$PORT` specified from the builder:
|
(port) option to bind to the `$PORT` specified from the builder:
|
||||||
|
|
||||||
> _In Windows environments, reference the `PORT` environment variable with `%PORT%`_
|
> _In Windows environments, reference the `PORT` environment variable with `%PORT%`_
|
||||||
@@ -26,7 +26,7 @@ For example, if you are using Gatsby, your `now-dev` script must use the `-p`
|
|||||||
...
|
...
|
||||||
"scripts": {
|
"scripts": {
|
||||||
...
|
...
|
||||||
"now-dev": "gatsby develop -p $PORT"
|
"dev": "gatsby develop -p $PORT"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
You either tried to run Now CLI inside a directory that should never be deployed, or you specified a directory that should never be deployed like this: `now <directory>`.
|
You either tried to run Vercel CLI inside a directory that should never be deployed, or you specified a directory that should never be deployed like this: `vercel <directory>`.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
When supplying a region or DC identifier in `now scale`,
|
When supplying a region or DC identifier in `vercel scale`,
|
||||||
we weren't able to recognize the value as valid.
|
we weren't able to recognize the value as valid.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Check your `now scale` command make sure you are using a
|
Check your `vercel scale` command make sure you are using a
|
||||||
valid string after the URL. Regions
|
valid string after the URL. Regions
|
||||||
and DCs have to be in *lowercase*.
|
and DCs have to be in _lowercase_.
|
||||||
|
|
||||||
**Valid region identifiers**:
|
**Valid region identifiers**:
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ and DCs have to be in *lowercase*.
|
|||||||
- `gru`
|
- `gru`
|
||||||
- `iad`
|
- `iad`
|
||||||
|
|
||||||
In `now-cli`, they currently are transformed to
|
In Vercel CLI, they currently are transformed to
|
||||||
DC identifiers before being sent to our APIs.
|
DC identifiers before being sent to our APIs.
|
||||||
|
|
||||||
**Valid DC identifiers**:
|
**Valid DC identifiers**:
|
||||||
@@ -32,5 +32,5 @@ DC identifiers before being sent to our APIs.
|
|||||||
To pass multiple ones, use a comma:
|
To pass multiple ones, use a comma:
|
||||||
|
|
||||||
```
|
```
|
||||||
now scale my-url-123.now.sh sfo,bru,gru 1 5
|
vercel scale my-url-123.now.sh sfo,bru,gru 1 5
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,31 +1,30 @@
|
|||||||
# `now scale ls` is deprecated
|
# `vercel scale ls` is deprecated
|
||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
We have stopped supporting this command, in favor of
|
We have stopped supporting this command, in favor of
|
||||||
better alternatives.
|
better alternatives.
|
||||||
|
|
||||||
`now scale ls` used to list all the scaling rules
|
`vercel scale ls` used to list all the scaling rules
|
||||||
for all your deployments. The output would be too long,
|
for all your deployments. The output would be too long,
|
||||||
and it would often be hard to find the information
|
and it would often be hard to find the information
|
||||||
you needed in a long list of items.
|
you needed in a long list of items.
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Instead of using `now scale ls` to list all your deployments
|
Instead of using `vercel scale ls` to list all your deployments
|
||||||
and their scaling rules, first use `now ls` to find
|
and their scaling rules, first use `vercel ls` to find
|
||||||
your deployment:
|
your deployment:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
now ls
|
vercel ls
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, select the URL of your deployment, which uniquely identifies it, and run:
|
Then, select the URL of your deployment, which uniquely identifies it, and run:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
now inspect my-deployment-12345.now.sh
|
vercel inspect my-deployment-12345.now.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The `inspect` subcommand will give you your deployment's scale information, including what datacenters it's enabled on, the
|
The `inspect` subcommand will give you your deployment's scale information, including what datacenters it's enabled on, the
|
||||||
current number of instances and minimums/maximums.
|
current number of instances and minimums/maximums.
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
#### Why This Error Occurred
|
#### Why This Error Occurred
|
||||||
|
|
||||||
You tried to use `now scale` on a path alias (`now alias -r rules.json`).
|
You tried to use `vercel scale` on a path alias (`vercel alias -r rules.json`).
|
||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
Path aliases are routes to instances. Instances can be scaled independent from each other.
|
Path aliases are routes to instances. Instances can be scaled independent from each other.
|
||||||
You can view path aliases by running `now alias ls <id>`.
|
You can view path aliases by running `vercel alias ls <id>`.
|
||||||
|
|
||||||
Documentation for Path Aliases can be found [here](https://vercel.com/docs/features/path-aliases).
|
Documentation for Path Aliases can be found [here](https://vercel.com/docs/features/path-aliases).
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ You specified the `--scope` flag and specified the ID or slug of a team that you
|
|||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
- Make sure commands like `now ls` work just fine. This will ensure that your user credentials are valid. If it's not working correctly, please log in again using `now login`.
|
- Make sure commands like `vercel ls` work just fine. This will ensure that your user credentials are valid. If it's not working correctly, please log in again using `vercel login`.
|
||||||
- Ensure that the scope you specified using `--scope` shows up in the output of `now switch`. If it doesn't, you're either not part of the team (if you specified a team) or you logged into the wrong user account.
|
- Ensure that the scope you specified using `--scope` shows up in the output of `vercel switch`. If it doesn't, you're either not part of the team (if you specified a team) or you logged into the wrong user account.
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ You tried to add or update a domain's configuration, but you don't have permissi
|
|||||||
|
|
||||||
#### Possible Ways to Fix It
|
#### Possible Ways to Fix It
|
||||||
|
|
||||||
If you or your team owns the domain, then you are most likely in the wrong context. Use `now switch` to select the team or user that owns the domain.
|
If you or your team owns the domain, then you are most likely in the wrong context. Use `vercel switch` to select the team or user that owns the domain.
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ or from a previous deployment who's alias you're trying to overwrite) has
|
|||||||
the `min` scale setting set to `0`. You can do this by running
|
the `min` scale setting set to `0`. You can do this by running
|
||||||
|
|
||||||
```
|
```
|
||||||
now scale <deployment> 0 10
|
vercel scale <deployment> 0 10
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -26,4 +26,4 @@ but the deployment instance is effectively not routable and cannot be
|
|||||||
verified.
|
verified.
|
||||||
|
|
||||||
If your instances are crashing before an HTTP port is exposed, verification
|
If your instances are crashing before an HTTP port is exposed, verification
|
||||||
will fail as well. Double check your logs (e.g.: by running `now logs <url>`)
|
will fail as well. Double check your logs (e.g.: by running `vercel logs <url>`)
|
||||||
|
|||||||
44
examples/README.md
vendored
@@ -14,43 +14,43 @@ Vercel is a cloud platform for static frontends and serverless functions. It ena
|
|||||||
|
|
||||||
This repository consists of multiple examples, created for use with the [Vercel](https://vercel.com) platform. In addition to this, it also contains:
|
This repository consists of multiple examples, created for use with the [Vercel](https://vercel.com) platform. In addition to this, it also contains:
|
||||||
|
|
||||||
- [Code of Conduct](https://github.com/zeit/now/blob/master/.github/CODE_OF_CONDUCT.md) - our Code of Conduct, adapted from the [Contributor Covenant](http://contributor-covenant.org)
|
- [Code of Conduct](https://github.com/vercel/vercel/blob/master/.github/CODE_OF_CONDUCT.md) - our Code of Conduct, adapted from the [Contributor Covenant](http://contributor-covenant.org)
|
||||||
- [Contributing Guidelines](https://github.com/zeit/now/blob/master/.github/CONTRIBUTING.md) - a guide on how to contribute to the Now Examples repository
|
- [Contributing Guidelines](https://github.com/vercel/vercel/blob/master/.github/CONTRIBUTING.md) - a guide on how to contribute to the examples repository
|
||||||
- [License](https://github.com/zeit/now/blob/master/LICENSE) - the standard MIT license under which these examples are published
|
- [License](https://github.com/vercel/vercel/blob/master/LICENSE) - the standard MIT license under which these examples are published
|
||||||
|
|
||||||
We recommend familiarizing yourself with the above sections, particularly if you are looking to make a contribution.
|
We recommend familiarizing yourself with the above sections, particularly if you are looking to make a contribution.
|
||||||
|
|
||||||
## Deploying Examples
|
## Deploying Examples
|
||||||
|
|
||||||
To get started using any of these examples as your own project, [install Now](https://vercel.com/download) and use either of the following commands in your terminal:
|
To get started using any of these examples as your own project, [install Vercel](https://vercel.com/download) and use either of the following commands in your terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
now init # Pick an example in the CLI
|
vercel init # Pick an example in the CLI
|
||||||
now init <example> # Create a new project from a specific <example>
|
vercel init <example> # Create a new project from a specific <example>
|
||||||
now init <example> <name> # Create a new project from a specific <example> with a different folder <name>
|
vercel init <example> <name> # Create a new project from a specific <example> with a different folder <name>
|
||||||
```
|
```
|
||||||
|
|
||||||
Deploying your project takes seconds and can be done with **just a single command**:
|
Deploying your project takes seconds and can be done with **just a single command**:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
now # Deploys the project with Now
|
vercel # Deploy your project with the CLI
|
||||||
```
|
```
|
||||||
|
|
||||||
With the `now` command, your project will be built and served by Now, providing you with a URL that can be shared immediately.
|
With the `vercel` command, your project will be built and served by Vercel, providing you with a URL that can be shared immediately.
|
||||||
|
|
||||||
## New Examples
|
## New Examples
|
||||||
|
|
||||||
We are continuously improving our examples based on best practices and feedback from the community. As a result, it is possible that example names will change and on occasion deprecated in favor of an improved implementation.
|
We are continuously improving our examples based on best practices and feedback from the community. As a result, it is possible that example names will change and on occasion deprecated in favor of an improved implementation.
|
||||||
|
|
||||||
For example, the previous `nodejs` example showed a static frontend with a Node.js API. This is illustrated now in the `svelte` example. Below is a table that lists some of the most popular previous examples and the equivalent replacement:
|
For example, the previous `nodejs` example showed a static frontend with a Node.js API. This is illustrated in the `svelte` example. Below is a table that lists some of the most popular previous examples and the equivalent replacement:
|
||||||
|
|
||||||
| Previous Example | New Example |
|
| Previous Example | New Example |
|
||||||
| ----------------- | ------------------------------------------------------------------------------------- |
|
| ----------------- | ------------------------------------------------------------------------------------------ |
|
||||||
| **monorepo** | [gatsby-functions](https://github.com/zeit/now/tree/master/examples/gatsby) |
|
| **monorepo** | [gatsby-functions](https://github.com/vercel/vercel/tree/master/examples/gatsby) |
|
||||||
| **nodejs** | [svelte-functions](https://github.com/zeit/now/tree/master/examples/svelte) |
|
| **nodejs** | [svelte-functions](https://github.com/vercel/vercel/tree/master/examples/svelte) |
|
||||||
| **nextjs-static** | [nextjs](https://github.com/zeit/now/tree/master/examples/nextjs) |
|
| **nextjs-static** | [nextjs](https://github.com/vercel/vercel/tree/master/examples/nextjs) |
|
||||||
| **vanilla-go** | [create-react-app](https://github.com/zeit/now/tree/master/examples/create-react-app) |
|
| **vanilla-go** | [create-react-app](https://github.com/vercel/vercel/tree/master/examples/create-react-app) |
|
||||||
| **typescript** | [gatsby-functions](https://github.com/zeit/now/tree/master/examples/gatsby) |
|
| **typescript** | [gatsby-functions](https://github.com/vercel/vercel/tree/master/examples/gatsby) |
|
||||||
|
|
||||||
## Migrating and Upgrading
|
## Migrating and Upgrading
|
||||||
|
|
||||||
@@ -60,15 +60,15 @@ If you would like to upgrade a project to take advantage of zero configuration,
|
|||||||
|
|
||||||
## How to Contribute
|
## How to Contribute
|
||||||
|
|
||||||
Contributing to Now Examples should be an enjoyable experience, as such we have created a set of [contributing guidelines](https://github.com/zeit/docs/blob/master/CONTRIBUTING.md) to help you do so.
|
Contributing examples should be an enjoyable experience, as such we have created a set of [contributing guidelines](https://github.com/vercel/vercel/blob/master/.github/CONTRIBUTING.md) to help you do so.
|
||||||
|
|
||||||
The guidelines cover important information such as the requirements for new examples and where to get help if you have any questions.
|
The guidelines cover important information such as the requirements for new examples and where to get help if you have any questions.
|
||||||
|
|
||||||
We have tried to make contributing to Now Examples as easy as possible, especially for those new to Open Source. If anything is unclear or you have any questions then please reach out to us on [GitHub Discussions](https://github.com/zeit/now/discussions) where we will do our best to help you.
|
We have tried to make contributing to examples as easy as possible, especially for those new to Open Source. If anything is unclear or you have any questions then please reach out to us on [GitHub Discussions](https://github.com/vercel/vercel/discussions) where we will do our best to help you.
|
||||||
|
|
||||||
## Reporting Issues
|
## Reporting Issues
|
||||||
|
|
||||||
We actively encourage our community to raise issues and provide feedback on areas of Now Examples that could be improved.
|
We actively encourage our community to raise issues and provide feedback on areas of examples that could be improved.
|
||||||
|
|
||||||
An issue can be raised by clicking the 'Issues' tab at the top of the repository, followed by the Green 'New issue' button.
|
An issue can be raised by clicking the 'Issues' tab at the top of the repository, followed by the Green 'New issue' button.
|
||||||
|
|
||||||
@@ -76,10 +76,10 @@ When submitting an issue, please thoroughly and concisely describe the problem y
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Now Examples is an open source project released under the [MIT License](https://github.com/zeit/docs/blob/master/LICENSE.md).
|
This repository is an open source project. See the [License](https://github.com/vercel/vercel/blob/master/LICENSE).
|
||||||
|
|
||||||
## Get In Touch
|
## Get In Touch
|
||||||
|
|
||||||
If you have any questions that are not covered by raising an issue then please get in touch with us on [GitHub Discussions](https://github.com/zeit/now/discussions). There you will find both members of the community and staff who are happy to help answer questions on anything Vercel related.
|
If you have any questions that are not covered by raising an issue then please get in touch with us on [GitHub Discussions](https://github.com/vercel/vercel/discussions). There you will find both members of the community and staff who are happy to help answer questions on anything Vercel related.
|
||||||
|
|
||||||
[](https://github.com/zeit/now/discussions)
|
[](https://github.com/vercel/vercel/discussions)
|
||||||
|
|||||||
@@ -6,22 +6,14 @@ This directory is a brief example of an [AMP](https://amp.dev/) site that can be
|
|||||||
|
|
||||||
Deploy your own AMP project with Vercel.
|
Deploy your own AMP project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/amp)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/amp)
|
||||||
|
|
||||||
_Live Example: https://amp.now-examples.now.sh_
|
_Live Example: https://amp.now-examples.now.sh_
|
||||||
|
|
||||||
### How We Created This Example
|
### How We Created This Example
|
||||||
|
|
||||||
To get started deploying AMP with Vercel, you can use the [Now CLI](https://vercel.com/download) to initialize the project:
|
To get started deploying AMP with Vercel, you can use the [Vercel CLI](https://vercel.com/download) to initialize the project:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ now init amp
|
$ vercel init amp
|
||||||
```
|
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new AMP project with a single command from your terminal using Now CLI:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||

|

|
||||||
|
|
||||||
# Angular Example
|
# Angular Example
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ This directory is a brief example of an [Angular](https://angular.io/) app that
|
|||||||
|
|
||||||
Deploy your own Angular project with Vercel.
|
Deploy your own Angular project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/angular)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/angular)
|
||||||
|
|
||||||
_Live Example: https://angular.now-examples.now.sh_
|
_Live Example: https://angular.now-examples.now.sh_
|
||||||
|
|
||||||
@@ -19,11 +19,3 @@ To get started with Angular, you can use the [Angular CLI](https://cli.angular.i
|
|||||||
```shell
|
```shell
|
||||||
$ ng new
|
$ ng new
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new Angular project with a single command from your terminal using [Now CLI](https://vercel.com/download):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
|
||||||
|
|||||||
4
examples/blitzjs/.babelrc.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: ["next/babel"],
|
||||||
|
plugins: [],
|
||||||
|
}
|
||||||
10
examples/blitzjs/.eslintrc.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ["react-app", "plugin:jsx-a11y/recommended"],
|
||||||
|
plugins: ["jsx-a11y"],
|
||||||
|
rules: {
|
||||||
|
"import/no-anonymous-default-export": "error",
|
||||||
|
"import/no-webpack-loader-syntax": "off",
|
||||||
|
"react/react-in-jsx-scope": "off", // React is always in scope with Blitz
|
||||||
|
"jsx-a11y/anchor-is-valid": "off", //Doesn't play well with Blitz/Next <Link> usage
|
||||||
|
},
|
||||||
|
}
|
||||||
56
examples/blitzjs/.gitignore
vendored
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# dependencies
|
||||||
|
node_modules
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.pnp.*
|
||||||
|
.npm
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# blitz
|
||||||
|
/.blitz/
|
||||||
|
/.next/
|
||||||
|
*.sqlite
|
||||||
|
.now
|
||||||
|
.vercel
|
||||||
|
.blitz-console-history
|
||||||
|
blitz-log.log
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env
|
||||||
|
.envrc
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
.nyc_output
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Caches
|
||||||
|
*.tsbuildinfo
|
||||||
|
.eslintcache
|
||||||
|
.node_repl_history
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
1
examples/blitzjs/.npmrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
save-exact=true
|
||||||
6
examples/blitzjs/.prettierignore
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
.gitkeep
|
||||||
|
.env
|
||||||
|
*.ico
|
||||||
|
*.lock
|
||||||
|
db/migrations
|
||||||
|
|
||||||
19
examples/blitzjs/README.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|

|
||||||
|
|
||||||
|
# Blitz.js Example
|
||||||
|
|
||||||
|
This directory is a brief example of a [Blitz.js](https://blitzjs.com/) project that can be deployed with Vercel and zero configuration.
|
||||||
|
|
||||||
|
## Deploy Your Own
|
||||||
|
|
||||||
|
Deploy your own Blitz.js project with Vercel by viewing the [documentation on deploying to Vercel](https://blitzjs.com/docs/deploy-vercel)
|
||||||
|
|
||||||
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/blitzjs)
|
||||||
|
|
||||||
|
### How We Created This Example
|
||||||
|
|
||||||
|
To get started with Blitz.js, you can use [npx](https://www.npmjs.com/package/npx) to initialize the project:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ npx blitz new
|
||||||
|
```
|
||||||
0
packages/now-cli/test/fixtures/unit/directory-main/a/index.js → examples/blitzjs/app/components/.keep
Executable file → Normal file
21
examples/blitzjs/app/components/ErrorBoundary.tsx
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import React from "react"
|
||||||
|
|
||||||
|
export default class ErrorBoundary extends React.Component<{
|
||||||
|
fallback: (error: any) => React.ReactNode
|
||||||
|
}> {
|
||||||
|
state = { hasError: false, error: null }
|
||||||
|
|
||||||
|
static getDerivedStateFromError(error: any) {
|
||||||
|
return {
|
||||||
|
hasError: true,
|
||||||
|
error,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
if (this.state.hasError) {
|
||||||
|
return this.props.fallback(this.state.error)
|
||||||
|
}
|
||||||
|
return this.props.children
|
||||||
|
}
|
||||||
|
}
|
||||||
0
packages/now-cli/test/fixtures/unit/directory-main/build/a.js → examples/blitzjs/app/layouts/.keep
Executable file → Normal file
5
examples/blitzjs/app/pages/_app.tsx
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { AppProps } from "blitz"
|
||||||
|
|
||||||
|
export default function MyApp({ Component, pageProps }: AppProps) {
|
||||||
|
return <Component {...pageProps} />
|
||||||
|
}
|
||||||
23
examples/blitzjs/app/pages/_document.tsx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { Document, Html, DocumentHead, Main, BlitzScript /*DocumentContext*/ } from "blitz"
|
||||||
|
|
||||||
|
class MyDocument extends Document {
|
||||||
|
// Only uncomment if you need to customize this behaviour
|
||||||
|
// static async getInitialProps(ctx: DocumentContext) {
|
||||||
|
// const initialProps = await Document.getInitialProps(ctx)
|
||||||
|
// return {...initialProps}
|
||||||
|
// }
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<Html lang="en">
|
||||||
|
<DocumentHead />
|
||||||
|
<body>
|
||||||
|
<Main />
|
||||||
|
<BlitzScript />
|
||||||
|
</body>
|
||||||
|
</Html>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MyDocument
|
||||||
197
examples/blitzjs/app/pages/index.tsx
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
import { Head, Link } from "blitz"
|
||||||
|
|
||||||
|
const Home = () => (
|
||||||
|
<div className="container">
|
||||||
|
<Head>
|
||||||
|
<title>blitzjs</title>
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
</Head>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div className="logo">
|
||||||
|
<img src="/logo.png" alt="blitz.js" />
|
||||||
|
</div>
|
||||||
|
<p>1. Run this command in your terminal:</p>
|
||||||
|
<pre>
|
||||||
|
<code>blitz generate all project name:string</code>
|
||||||
|
</pre>
|
||||||
|
<p>2. Then run this command:</p>
|
||||||
|
<pre>
|
||||||
|
<code>blitz db migrate</code>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
3. Go to{" "}
|
||||||
|
<Link href="/projects">
|
||||||
|
<a>/projects</a>
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
|
<div className="buttons">
|
||||||
|
<a
|
||||||
|
className="button"
|
||||||
|
href="https://github.com/blitz-js/blitz/blob/master/USER_GUIDE.md?utm_source=blitz-new&utm_medium=app-template&utm_campaign=blitz-new"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Documentation
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="button-outline"
|
||||||
|
href="https://github.com/blitz-js/blitz"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Github Repo
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
className="button-outline"
|
||||||
|
href="https://slack.blitzjs.com"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Slack Community
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<a
|
||||||
|
href="https://blitzjs.com?utm_source=blitz-new&utm_medium=app-template&utm_campaign=blitz-new"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Powered by Blitz.js
|
||||||
|
</a>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.container {
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
padding: 5rem 0;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
main p {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
border-top: 1px solid #eaeaea;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #45009d;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
color: #f4f4f4;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo img {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
|
grid-gap: 0.5rem;
|
||||||
|
margin-top: 6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button {
|
||||||
|
background-color: #6700eb;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
color: #f4f4f4;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:hover {
|
||||||
|
background-color: #45009d;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button-outline {
|
||||||
|
border: 2px solid #6700eb;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
color: #6700eb;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button-outline:hover {
|
||||||
|
border-color: #45009d;
|
||||||
|
color: #45009d;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background: #fafafa;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0.75rem;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
|
||||||
|
Bitstream Vera Sans Mono, Courier New, monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
max-width: 800px;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
.grid {
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
|
||||||
|
<style jsx global>{`
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@300;700&display=swap");
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
font-family: "Libre Franklin", -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
||||||
|
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
export default Home
|
||||||
15
examples/blitzjs/blitz.config.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
module.exports = {
|
||||||
|
/*
|
||||||
|
webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
|
||||||
|
// Note: we provide webpack above so you should not `require` it
|
||||||
|
// Perform customizations to webpack config
|
||||||
|
// Important: return the modified config
|
||||||
|
return config
|
||||||
|
},
|
||||||
|
webpackDevMiddleware: (config) => {
|
||||||
|
// Perform customizations to webpack dev middleware config
|
||||||
|
// Important: return the modified config
|
||||||
|
return config
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
}
|
||||||
15
examples/blitzjs/db/index.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { PrismaClient } from "@prisma/client"
|
||||||
|
export * from "@prisma/client"
|
||||||
|
|
||||||
|
let prisma: PrismaClient
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === "production") {
|
||||||
|
prisma = new PrismaClient()
|
||||||
|
} else {
|
||||||
|
// Ensure the prisma instance is re-used during hot-reloading
|
||||||
|
// Otherwise, a new client will be created on every reload
|
||||||
|
global["prisma"] = global["prisma"] || new PrismaClient()
|
||||||
|
prisma = global["prisma"]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default prisma
|
||||||
0
packages/now-cli/test/fixtures/unit/dockerfile-empty/Dockerfile → examples/blitzjs/db/migrations/.keep
Executable file → Normal file
27
examples/blitzjs/db/schema.prisma
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// This is your Prisma schema file,
|
||||||
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||||
|
|
||||||
|
datasource sqlite {
|
||||||
|
provider = "sqlite"
|
||||||
|
url = "file:./db.sqlite"
|
||||||
|
}
|
||||||
|
|
||||||
|
// SQLite is easy to start with, but if you use Postgres in production
|
||||||
|
// you should also use it in development with the following:
|
||||||
|
//datasource postgresql {
|
||||||
|
// provider = "postgresql"
|
||||||
|
// url = env("DATABASE_URL")
|
||||||
|
//}
|
||||||
|
|
||||||
|
generator client {
|
||||||
|
provider = "prisma-client-js"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------
|
||||||
|
|
||||||
|
//model Project {
|
||||||
|
// id Int @default(autoincrement()) @id
|
||||||
|
// name String
|
||||||
|
//}
|
||||||
|
|
||||||
55
examples/blitzjs/package.json
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"name": "blitzjs",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"start": "blitz start",
|
||||||
|
"studio": "blitz db studio",
|
||||||
|
"build": "blitz build",
|
||||||
|
"lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
|
||||||
|
"test": "echo \"No tests yet\""
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"defaults"
|
||||||
|
],
|
||||||
|
"prettier": {
|
||||||
|
"semi": false,
|
||||||
|
"printWidth": 100
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "lint-staged && pretty-quick --staged",
|
||||||
|
"pre-push": "blitz test"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.{js,ts,tsx}": [
|
||||||
|
"eslint --fix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@prisma/cli": "latest",
|
||||||
|
"@prisma/client": "latest",
|
||||||
|
"blitz": "latest",
|
||||||
|
"react": "experimental",
|
||||||
|
"react-dom": "experimental"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/react": "16.9.36",
|
||||||
|
"@typescript-eslint/eslint-plugin": "2.x",
|
||||||
|
"@typescript-eslint/parser": "2.x",
|
||||||
|
"babel-eslint": "10.1.0",
|
||||||
|
"eslint": "6.8.0",
|
||||||
|
"eslint-config-react-app": "5.2.1",
|
||||||
|
"eslint-plugin-flowtype": "4.7.0",
|
||||||
|
"eslint-plugin-import": "2.21.2",
|
||||||
|
"eslint-plugin-jsx-a11y": "6.2.3",
|
||||||
|
"eslint-plugin-react": "7.20.0",
|
||||||
|
"eslint-plugin-react-hooks": "3.0.0",
|
||||||
|
"husky": "4.2.5",
|
||||||
|
"lint-staged": "10.2.10",
|
||||||
|
"prettier": "2.0.5",
|
||||||
|
"pretty-quick": "2.0.1",
|
||||||
|
"typescript": "3.9.5"
|
||||||
|
},
|
||||||
|
"private": true
|
||||||
|
}
|
||||||
BIN
examples/blitzjs/public/favicon.ico
Executable file
|
After Width: | Height: | Size: 556 B |
BIN
examples/blitzjs/public/logo.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
20
examples/blitzjs/tsconfig.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"baseUrl": "./",
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": false,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve"
|
||||||
|
},
|
||||||
|
"exclude": ["node_modules"],
|
||||||
|
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
|
||||||
|
}
|
||||||
0
packages/now-cli/test/fixtures/unit/extensionless-main/build/a.js → examples/blitzjs/utils/.keep
Executable file → Normal file
@@ -6,7 +6,7 @@ This directory is a brief example of a [Brunch](https://brunch.io/) site that ca
|
|||||||
|
|
||||||
Deploy your own Brunch project with Vercel.
|
Deploy your own Brunch project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/brunch)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/brunch)
|
||||||
|
|
||||||
_Live Example: https://brunch.now-examples.now.sh_
|
_Live Example: https://brunch.now-examples.now.sh_
|
||||||
|
|
||||||
@@ -17,11 +17,3 @@ To get started deploying Brunch with Vercel, you can use the [Brunch CLI](https:
|
|||||||
```shell
|
```shell
|
||||||
$ brunch new project-name -s es6
|
$ brunch new project-name -s es6
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new Brunch project with a single command from your terminal using [Now CLI](https://vercel.com/download):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||

|

|
||||||
|
|
||||||
# React Example
|
# React Example
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ This directory is a brief example of a [React](https://reactjs.org/) app with [S
|
|||||||
|
|
||||||
Deploy your own React project, along with Serverless Functions, with Vercel.
|
Deploy your own React project, along with Serverless Functions, with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/create-react-app-functions)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/create-react-app-functions)
|
||||||
|
|
||||||
_Live Example: https://create-react-app.now-examples.now.sh/_
|
_Live Example: https://create-react-app.now-examples.now.sh/_
|
||||||
|
|
||||||
@@ -19,11 +19,3 @@ To get started with React, along with [Serverless Functions](https://vercel.com/
|
|||||||
```shell
|
```shell
|
||||||
$ npx create-react-app my-app
|
$ npx create-react-app my-app
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new React project, along with [Serverless Functions](https://vercel.com/docs/v2/serverless-functions/introduction), with a single command from your terminal using [Now CLI](https://vercel.com/download):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ function App() {
|
|||||||
</h2>
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://github.com/zeit/now/tree/master/examples/create-react-app"
|
href="https://github.com/vercel/vercel/tree/master/examples/create-react-app"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer noopener"
|
rel="noreferrer noopener"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -6,22 +6,14 @@ This directory is a brief example of using a Custom Build script that can be dep
|
|||||||
|
|
||||||
Deploy your own Custom Built project with Vercel.
|
Deploy your own Custom Built project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/custom-build)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/custom-build)
|
||||||
|
|
||||||
_Live Example: https://custom-build.now-examples.now.sh_
|
_Live Example: https://custom-build.now-examples.now.sh_
|
||||||
|
|
||||||
### How We Created This Example
|
### How We Created This Example
|
||||||
|
|
||||||
To get started deploying a Custom Built project with Vercel, you can use the [Now CLI](https://vercel.com/download) to initialize the project:
|
To get started deploying a Custom Built project with Vercel, you can use the [Vercel CLI](https://vercel.com/download) to initialize the project:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ now init custom-build
|
$ vercel init custom-build
|
||||||
```
|
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new Custom Built project with a single command from your terminal using [Now CLI](https://vercel.com/download):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
```
|
||||||
|
|||||||
22
examples/docusaurus-2/.gitignore
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Dependencies
|
||||||
|
/node_modules
|
||||||
|
|
||||||
|
# Production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.docusaurus
|
||||||
|
.cache-loader
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
.DS_Store
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
.vercel
|
||||||
17
examples/docusaurus-2/README.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Docusaurus Example
|
||||||
|
|
||||||
|
This directory is a brief example of a [Docusaurus](https://v2.docusaurus.io) site that can be deployed with Vercel and zero configuration.
|
||||||
|
|
||||||
|
## Deploy Your Own
|
||||||
|
|
||||||
|
Deploy your own Docusaurus project with Vercel.
|
||||||
|
|
||||||
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/docusaurus-2)
|
||||||
|
|
||||||
|
### How We Created This Example
|
||||||
|
|
||||||
|
To get started with Docusaurus on Vercel, you can use the [Docusaurus CLI](https://v2.docusaurus.io/docs/installation#scaffold-project-website) to initialize the project:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ npx @docusaurus/init@next init my-website classic
|
||||||
|
```
|
||||||
11
examples/docusaurus-2/blog/2019-05-28-hola.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
id: hola
|
||||||
|
title: Hola
|
||||||
|
author: Gao Wei
|
||||||
|
author_title: Docusaurus Core Team
|
||||||
|
author_url: https://github.com/wgao19
|
||||||
|
author_image_url: https://avatars1.githubusercontent.com/u/2055384?v=4
|
||||||
|
tags: [hola, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
||||||
17
examples/docusaurus-2/blog/2019-05-29-hello-world.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
id: hello-world
|
||||||
|
title: Hello
|
||||||
|
author: Endilie Yacop Sucipto
|
||||||
|
author_title: Maintainer of Docusaurus
|
||||||
|
author_url: https://github.com/endiliey
|
||||||
|
author_image_url: https://avatars1.githubusercontent.com/u/17883920?s=460&v=4
|
||||||
|
tags: [hello, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Welcome to this blog. This blog is created with [**Docusaurus 2 alpha**](https://v2.docusaurus.io/).
|
||||||
|
|
||||||
|
<!--truncate-->
|
||||||
|
|
||||||
|
This is a test post.
|
||||||
|
|
||||||
|
A whole bunch of other information.
|
||||||
13
examples/docusaurus-2/blog/2019-05-30-welcome.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
id: welcome
|
||||||
|
title: Welcome
|
||||||
|
author: Yangshun Tay
|
||||||
|
author_title: Front End Engineer @ Facebook
|
||||||
|
author_url: https://github.com/yangshun
|
||||||
|
author_image_url: https://avatars0.githubusercontent.com/u/1315101?s=400&v=4
|
||||||
|
tags: [facebook, hello, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Blog features are powered by the blog plugin. Simply add files to the `blog` directory. It supports tags as well!
|
||||||
|
|
||||||
|
Delete the whole directory if you don't want the blog features. As simple as that!
|
||||||
202
examples/docusaurus-2/docs/doc1.md
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
---
|
||||||
|
id: doc1
|
||||||
|
title: Style Guide
|
||||||
|
sidebar_label: Style Guide
|
||||||
|
---
|
||||||
|
|
||||||
|
You can write content using [GitHub-flavored Markdown syntax](https://github.github.com/gfm/).
|
||||||
|
|
||||||
|
## Markdown Syntax
|
||||||
|
|
||||||
|
To serve as an example page when styling markdown based Docusaurus sites.
|
||||||
|
|
||||||
|
## Headers
|
||||||
|
|
||||||
|
# H1 - Create the best documentation
|
||||||
|
|
||||||
|
## H2 - Create the best documentation
|
||||||
|
|
||||||
|
### H3 - Create the best documentation
|
||||||
|
|
||||||
|
#### H4 - Create the best documentation
|
||||||
|
|
||||||
|
##### H5 - Create the best documentation
|
||||||
|
|
||||||
|
###### H6 - Create the best documentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Emphasis
|
||||||
|
|
||||||
|
Emphasis, aka italics, with _asterisks_ or _underscores_.
|
||||||
|
|
||||||
|
Strong emphasis, aka bold, with **asterisks** or **underscores**.
|
||||||
|
|
||||||
|
Combined emphasis with **asterisks and _underscores_**.
|
||||||
|
|
||||||
|
Strikethrough uses two tildes. ~~Scratch this.~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lists
|
||||||
|
|
||||||
|
1. First ordered list item
|
||||||
|
1. Another item ⋅⋅\* Unordered sub-list.
|
||||||
|
1. Actual numbers don't matter, just that it's a number ⋅⋅1. Ordered sub-list
|
||||||
|
1. And another item.
|
||||||
|
|
||||||
|
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||||
|
|
||||||
|
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ ⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅ ⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
|
||||||
|
|
||||||
|
- Unordered list can use asterisks
|
||||||
|
|
||||||
|
* Or minuses
|
||||||
|
|
||||||
|
- Or pluses
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[I'm an inline-style link](https://www.google.com)
|
||||||
|
|
||||||
|
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
|
||||||
|
|
||||||
|
[I'm a reference-style link][arbitrary case-insensitive reference text]
|
||||||
|
|
||||||
|
[I'm a relative reference to a repository file](../blob/master/LICENSE)
|
||||||
|
|
||||||
|
[You can use numbers for reference-style link definitions][1]
|
||||||
|
|
||||||
|
Or leave it empty and use the [link text itself].
|
||||||
|
|
||||||
|
URLs and URLs in angle brackets will automatically get turned into links. http://www.example.com or <http://www.example.com> and sometimes example.com (but not on Github, for example).
|
||||||
|
|
||||||
|
Some text to show that the reference links can follow later.
|
||||||
|
|
||||||
|
[arbitrary case-insensitive reference text]: https://www.mozilla.org
|
||||||
|
[1]: http://slashdot.org
|
||||||
|
[link text itself]: http://www.reddit.com
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Images
|
||||||
|
|
||||||
|
Here's our logo (hover to see the title text):
|
||||||
|
|
||||||
|
Inline-style: 
|
||||||
|
|
||||||
|
Reference-style: ![alt text][logo]
|
||||||
|
|
||||||
|
[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png 'Logo Title Text 2'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Code
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var s = 'JavaScript syntax highlighting';
|
||||||
|
alert(s);
|
||||||
|
```
|
||||||
|
|
||||||
|
```python
|
||||||
|
s = "Python syntax highlighting"
|
||||||
|
print(s)
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
No language indicated, so no syntax highlighting.
|
||||||
|
But let's throw in a <b>tag</b>.
|
||||||
|
```
|
||||||
|
|
||||||
|
```js {2}
|
||||||
|
function highlightMe() {
|
||||||
|
console.log('This line can be highlighted!');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tables
|
||||||
|
|
||||||
|
Colons can be used to align columns.
|
||||||
|
|
||||||
|
| Tables | Are | Cool |
|
||||||
|
| ------------- | :-----------: | -----: |
|
||||||
|
| col 3 is | right-aligned | \$1600 |
|
||||||
|
| col 2 is | centered | \$12 |
|
||||||
|
| zebra stripes | are neat | \$1 |
|
||||||
|
|
||||||
|
There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.
|
||||||
|
|
||||||
|
| Markdown | Less | Pretty |
|
||||||
|
| -------- | --------- | ---------- |
|
||||||
|
| _Still_ | `renders` | **nicely** |
|
||||||
|
| 1 | 2 | 3 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Blockquotes
|
||||||
|
|
||||||
|
> Blockquotes are very handy in email to emulate reply text. This line is part of the same quote.
|
||||||
|
|
||||||
|
Quote break.
|
||||||
|
|
||||||
|
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can _put_ **Markdown** into a blockquote.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Inline HTML
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>Definition list</dt>
|
||||||
|
<dd>Is something people use sometimes.</dd>
|
||||||
|
|
||||||
|
<dt>Markdown in HTML</dt>
|
||||||
|
<dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Line Breaks
|
||||||
|
|
||||||
|
Here's a line for us to start with.
|
||||||
|
|
||||||
|
This line is separated from the one above by two newlines, so it will be a _separate paragraph_.
|
||||||
|
|
||||||
|
This line is also a separate paragraph, but... This line is only separated by a single newline, so it's a separate line in the _same paragraph_.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Admonitions
|
||||||
|
|
||||||
|
:::note
|
||||||
|
|
||||||
|
This is a note
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
|
||||||
|
This is a tip
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::important
|
||||||
|
|
||||||
|
This is important
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
|
||||||
|
This is a caution
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::warning
|
||||||
|
|
||||||
|
This is a warning
|
||||||
|
|
||||||
|
:::
|
||||||
6
examples/docusaurus-2/docs/doc2.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
id: doc2
|
||||||
|
title: Document Number 2
|
||||||
|
---
|
||||||
|
|
||||||
|
This is a link to [another document.](doc3.md) This is a link to an [external page.](http://www.example.com)
|
||||||
14
examples/docusaurus-2/docs/doc3.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
id: doc3
|
||||||
|
title: This is Document Number 3
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac euismod odio, eu consequat dui. Nullam molestie consectetur risus id imperdiet. Proin sodales ornare turpis, non mollis massa ultricies id. Nam at nibh scelerisque, feugiat ante non, dapibus tortor. Vivamus volutpat diam quis tellus elementum bibendum. Praesent semper gravida velit quis aliquam. Etiam in cursus neque. Nam lectus ligula, malesuada et mauris a, bibendum faucibus mi. Phasellus ut interdum felis. Phasellus in odio pulvinar, porttitor urna eget, fringilla lectus. Aliquam sollicitudin est eros. Mauris consectetur quam vitae mauris interdum hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
|
||||||
|
Duis et egestas libero, imperdiet faucibus ipsum. Sed posuere eget urna vel feugiat. Vivamus a arcu sagittis, fermentum urna dapibus, congue lectus. Fusce vulputate porttitor nisl, ac cursus elit volutpat vitae. Nullam vitae ipsum egestas, convallis quam non, porta nibh. Morbi gravida erat nec neque bibendum, eu pellentesque velit posuere. Fusce aliquam erat eu massa eleifend tristique.
|
||||||
|
|
||||||
|
Sed consequat sollicitudin ipsum eget tempus. Integer a aliquet velit. In justo nibh, pellentesque non suscipit eget, gravida vel lacus. Donec odio ante, malesuada in massa quis, pharetra tristique ligula. Donec eros est, tristique eget finibus quis, semper non nisl. Vivamus et elit nec enim ornare placerat. Sed posuere odio a elit cursus sagittis.
|
||||||
|
|
||||||
|
Phasellus feugiat purus eu tortor ultrices finibus. Ut libero nibh, lobortis et libero nec, dapibus posuere eros. Sed sagittis euismod justo at consectetur. Nulla finibus libero placerat, cursus sapien at, eleifend ligula. Vivamus elit nisl, hendrerit ac nibh eu, ultrices tempus dui. Nam tellus neque, commodo non rhoncus eu, gravida in risus. Nullam id iaculis tortor.
|
||||||
|
|
||||||
|
Nullam at odio in sem varius tempor sit amet vel lorem. Etiam eu hendrerit nisl. Fusce nibh mauris, vulputate sit amet ex vitae, congue rhoncus nisl. Sed eget tellus purus. Nullam tempus commodo erat ut tristique. Cras accumsan massa sit amet justo consequat eleifend. Integer scelerisque vitae tellus id consectetur.
|
||||||
17
examples/docusaurus-2/docs/mdx.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
id: mdx
|
||||||
|
title: Powered by MDX
|
||||||
|
---
|
||||||
|
|
||||||
|
You can write JSX and use React components within your Markdown thanks to [MDX](https://mdxjs.com/).
|
||||||
|
|
||||||
|
export const Highlight = ({children, color}) => ( <span style={{
|
||||||
|
backgroundColor: color,
|
||||||
|
borderRadius: '2px',
|
||||||
|
color: '#fff',
|
||||||
|
padding: '0.2rem',
|
||||||
|
}}> {children} </span> );
|
||||||
|
|
||||||
|
<Highlight color="#25c2a0">Docusaurus green</Highlight> and <Highlight color="#1877F2">Facebook blue</Highlight> are my favorite colors.
|
||||||
|
|
||||||
|
I can write **Markdown** alongside my _JSX_!
|
||||||
103
examples/docusaurus-2/docusaurus.config.js
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
module.exports = {
|
||||||
|
title: 'My Site',
|
||||||
|
tagline: 'The tagline of my site',
|
||||||
|
url: 'https://your-docusaurus-test-site.com',
|
||||||
|
baseUrl: '/',
|
||||||
|
favicon: 'img/favicon.ico',
|
||||||
|
organizationName: 'facebook', // Usually your GitHub org/user name.
|
||||||
|
projectName: 'docusaurus', // Usually your repo name.
|
||||||
|
themeConfig: {
|
||||||
|
navbar: {
|
||||||
|
title: 'My Site',
|
||||||
|
logo: {
|
||||||
|
alt: 'My Site Logo',
|
||||||
|
src: 'img/logo.svg',
|
||||||
|
},
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
to: 'docs/doc1',
|
||||||
|
activeBasePath: 'docs',
|
||||||
|
label: 'Docs',
|
||||||
|
position: 'left',
|
||||||
|
},
|
||||||
|
{to: 'blog', label: 'Blog', position: 'left'},
|
||||||
|
{
|
||||||
|
href: 'https://github.com/facebook/docusaurus',
|
||||||
|
label: 'GitHub',
|
||||||
|
position: 'right',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
style: 'dark',
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
title: 'Docs',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Style Guide',
|
||||||
|
to: 'docs/doc1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Second Doc',
|
||||||
|
to: 'docs/doc2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Community',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Stack Overflow',
|
||||||
|
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Discord',
|
||||||
|
href: 'https://discordapp.com/invite/docusaurus',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Twitter',
|
||||||
|
href: 'https://twitter.com/docusaurus',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'More',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Blog',
|
||||||
|
to: 'blog',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'GitHub',
|
||||||
|
href: 'https://github.com/facebook/docusaurus',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@docusaurus/preset-classic',
|
||||||
|
{
|
||||||
|
docs: {
|
||||||
|
sidebarPath: require.resolve('./sidebars.js'),
|
||||||
|
// Please change this to your repo.
|
||||||
|
editUrl:
|
||||||
|
'https://github.com/facebook/docusaurus/edit/master/website/',
|
||||||
|
},
|
||||||
|
blog: {
|
||||||
|
showReadingTime: true,
|
||||||
|
// Please change this to your repo.
|
||||||
|
editUrl:
|
||||||
|
'https://github.com/facebook/docusaurus/edit/master/website/blog/',
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
customCss: require.resolve('./src/css/custom.css'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
};
|
||||||
30
examples/docusaurus-2/package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "docusaurus-2",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"start": "docusaurus start",
|
||||||
|
"build": "docusaurus build",
|
||||||
|
"swizzle": "docusaurus swizzle",
|
||||||
|
"deploy": "docusaurus deploy"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@docusaurus/core": "^2.0.0-alpha.54",
|
||||||
|
"@docusaurus/preset-classic": "^2.0.0-alpha.54",
|
||||||
|
"classnames": "^2.2.6",
|
||||||
|
"react": "^16.8.4",
|
||||||
|
"react-dom": "^16.8.4"
|
||||||
|
},
|
||||||
|
"browserslist": {
|
||||||
|
"production": [
|
||||||
|
">0.2%",
|
||||||
|
"not dead",
|
||||||
|
"not op_mini all"
|
||||||
|
],
|
||||||
|
"development": [
|
||||||
|
"last 1 chrome version",
|
||||||
|
"last 1 firefox version",
|
||||||
|
"last 1 safari version"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
6
examples/docusaurus-2/sidebars.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
someSidebar: {
|
||||||
|
Docusaurus: ['doc1', 'doc2', 'doc3'],
|
||||||
|
Features: ['mdx'],
|
||||||
|
},
|
||||||
|
};
|
||||||
25
examples/docusaurus-2/src/css/custom.css
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/* stylelint-disable docusaurus/copyright-header */
|
||||||
|
/**
|
||||||
|
* Any CSS included here will be global. The classic template
|
||||||
|
* bundles Infima by default. Infima is a CSS framework designed to
|
||||||
|
* work well for content-centric websites.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* You can override the default Infima variables here. */
|
||||||
|
:root {
|
||||||
|
--ifm-color-primary: #25c2a0;
|
||||||
|
--ifm-color-primary-dark: rgb(33, 175, 144);
|
||||||
|
--ifm-color-primary-darker: rgb(31, 165, 136);
|
||||||
|
--ifm-color-primary-darkest: rgb(26, 136, 112);
|
||||||
|
--ifm-color-primary-light: rgb(70, 203, 174);
|
||||||
|
--ifm-color-primary-lighter: rgb(102, 212, 189);
|
||||||
|
--ifm-color-primary-lightest: rgb(146, 224, 208);
|
||||||
|
--ifm-code-font-size: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.docusaurus-highlight-code-line {
|
||||||
|
background-color: rgb(72, 77, 91);
|
||||||
|
display: block;
|
||||||
|
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
||||||
|
padding: 0 var(--ifm-pre-padding);
|
||||||
|
}
|
||||||
97
examples/docusaurus-2/src/pages/index.js
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import classnames from 'classnames';
|
||||||
|
import Layout from '@theme/Layout';
|
||||||
|
import Link from '@docusaurus/Link';
|
||||||
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||||
|
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||||
|
import styles from './styles.module.css';
|
||||||
|
|
||||||
|
const features = [
|
||||||
|
{
|
||||||
|
title: <>Easy to Use</>,
|
||||||
|
imageUrl: 'img/undraw_docusaurus_mountain.svg',
|
||||||
|
description: (
|
||||||
|
<>
|
||||||
|
Docusaurus was designed from the ground up to be easily installed and
|
||||||
|
used to get your website up and running quickly.
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: <>Focus on What Matters</>,
|
||||||
|
imageUrl: 'img/undraw_docusaurus_tree.svg',
|
||||||
|
description: (
|
||||||
|
<>
|
||||||
|
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
||||||
|
ahead and move your docs into the <code>docs</code> directory.
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: <>Powered by React</>,
|
||||||
|
imageUrl: 'img/undraw_docusaurus_react.svg',
|
||||||
|
description: (
|
||||||
|
<>
|
||||||
|
Extend or customize your website layout by reusing React. Docusaurus can
|
||||||
|
be extended while reusing the same header and footer.
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function Feature({imageUrl, title, description}) {
|
||||||
|
const imgUrl = useBaseUrl(imageUrl);
|
||||||
|
return (
|
||||||
|
<div className={classnames('col col--4', styles.feature)}>
|
||||||
|
{imgUrl && (
|
||||||
|
<div className="text--center">
|
||||||
|
<img className={styles.featureImage} src={imgUrl} alt={title} />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<h3>{title}</h3>
|
||||||
|
<p>{description}</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Home() {
|
||||||
|
const context = useDocusaurusContext();
|
||||||
|
const {siteConfig = {}} = context;
|
||||||
|
return (
|
||||||
|
<Layout
|
||||||
|
title={`Hello from ${siteConfig.title}`}
|
||||||
|
description="Description will go into a meta tag in <head />">
|
||||||
|
<header className={classnames('hero hero--primary', styles.heroBanner)}>
|
||||||
|
<div className="container">
|
||||||
|
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||||
|
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||||
|
<div className={styles.buttons}>
|
||||||
|
<Link
|
||||||
|
className={classnames(
|
||||||
|
'button button--outline button--secondary button--lg',
|
||||||
|
styles.getStarted,
|
||||||
|
)}
|
||||||
|
to={useBaseUrl('docs/doc1')}>
|
||||||
|
Get Started
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
{features && features.length && (
|
||||||
|
<section className={styles.features}>
|
||||||
|
<div className="container">
|
||||||
|
<div className="row">
|
||||||
|
{features.map((props, idx) => (
|
||||||
|
<Feature key={idx} {...props} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
)}
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Home;
|
||||||
36
examples/docusaurus-2/src/pages/styles.module.css
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/* stylelint-disable docusaurus/copyright-header */
|
||||||
|
/**
|
||||||
|
* CSS files with the .module.css suffix will be treated as CSS modules
|
||||||
|
* and scoped locally.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.heroBanner {
|
||||||
|
padding: 4rem 0;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 966px) {
|
||||||
|
.heroBanner {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.features {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 2rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.featureImage {
|
||||||
|
height: 200px;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
BIN
examples/docusaurus-2/static/img/favicon.ico
Normal file
|
After Width: | Height: | Size: 766 B |
1
examples/docusaurus-2/static/img/logo.svg
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
170
examples/docusaurus-2/static/img/undraw_docusaurus_mountain.svg
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
|
||||||
|
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
|
||||||
|
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
|
||||||
|
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
|
||||||
|
<path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
|
||||||
|
<path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||||
|
<path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
|
||||||
|
<path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||||
|
<circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
|
||||||
|
<circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
|
||||||
|
<path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
|
||||||
|
<path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
|
||||||
|
<path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||||
|
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
|
||||||
|
<path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||||
|
<rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
|
||||||
|
<rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
|
||||||
|
<path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||||
|
<path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||||
|
<path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||||
|
<path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||||
|
<path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||||
|
<path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
|
||||||
|
<path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||||
|
<path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||||
|
<path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||||
|
<path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||||
|
<path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||||
|
<path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||||
|
<path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
|
||||||
|
<path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
|
||||||
|
<path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
|
||||||
|
<path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
|
||||||
|
</g>
|
||||||
|
<g id="docusaurus_keytar" transform="translate(312.271 493.733)">
|
||||||
|
<path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
|
||||||
|
<rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
|
||||||
|
<g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
|
||||||
|
<rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
|
||||||
|
<path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
|
||||||
|
<path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
|
||||||
|
<path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
|
||||||
|
<rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
|
||||||
|
<rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
</g>
|
||||||
|
<path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 31 KiB |
169
examples/docusaurus-2/static/img/undraw_docusaurus_react.svg
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
|
||||||
|
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
|
||||||
|
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
|
||||||
|
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
|
||||||
|
<path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
|
||||||
|
<path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
|
||||||
|
<path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||||
|
<rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
|
||||||
|
<rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
|
||||||
|
<rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
|
||||||
|
<path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||||
|
<path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
|
||||||
|
<path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
|
||||||
|
<path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||||
|
<path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
|
||||||
|
<path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
|
||||||
|
<path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
|
||||||
|
<path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
|
||||||
|
<circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
|
||||||
|
<path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
|
||||||
|
<path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
|
||||||
|
<path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||||
|
<path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
|
||||||
|
<path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
|
||||||
|
<path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
|
||||||
|
<path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
|
||||||
|
<path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
|
||||||
|
<path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
|
||||||
|
<path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
|
||||||
|
</g>
|
||||||
|
<g id="docusaurus_keytar" transform="translate(670.271 615.768)">
|
||||||
|
<path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
|
||||||
|
<rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
|
||||||
|
<g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
|
||||||
|
<rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
|
||||||
|
<path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
|
||||||
|
<path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
|
||||||
|
<path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
|
||||||
|
<rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
<g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
|
||||||
|
<rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
|
||||||
|
<rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
|
||||||
|
<path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
|
||||||
|
</g>
|
||||||
|
<rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
|
||||||
|
<rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
<rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
|
||||||
|
</g>
|
||||||
|
<path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
|
||||||
|
<path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
|
||||||
|
</g>
|
||||||
|
<g id="React-icon" transform="translate(906.3 541.56)">
|
||||||
|
<path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
|
||||||
|
<path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
|
||||||
|
<circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
|
||||||
|
<path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 12 KiB |
9367
examples/docusaurus-2/yarn.lock
Normal file
@@ -1,4 +1,4 @@
|
|||||||

|

|
||||||
|
|
||||||
# Docusaurus Example
|
# Docusaurus Example
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ This directory is a brief example of a [Docusaurus](https://docusaurus.io/) site
|
|||||||
|
|
||||||
Deploy your own Docusaurus project with Vercel.
|
Deploy your own Docusaurus project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now/tree/master/examples/docusaurus)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/examples/docusaurus)
|
||||||
|
|
||||||
_Live Example: https://docusaurus.now-examples.now.sh_
|
_Live Example: https://docusaurus.now-examples.now.sh_
|
||||||
|
|
||||||
@@ -19,11 +19,3 @@ To get started with Docusaurus for deployment with Vercel, you can use the [Docu
|
|||||||
```shell
|
```shell
|
||||||
$ docusaurus-init
|
$ docusaurus-init
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
You can deploy your new Docusaurus project with a single command from your terminal using [Now CLI](https://vercel.com/download):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -6,20 +6,12 @@ This directory is a brief example of a [Dojo](https://dojo.io) site that can be
|
|||||||
|
|
||||||
Deploy your own Dojo project with Vercel.
|
Deploy your own Dojo project with Vercel.
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/zeit/now-examples/tree/master/dojo)
|
[](https://vercel.com/import/project?template=https://github.com/vercel/vercel/tree/master/dojo)
|
||||||
|
|
||||||
### How We Created This Example
|
### How We Created This Example
|
||||||
|
|
||||||
To get started with Dojo on Vercel, you can use the [Dojo CLI](https://github.com/dojo/cli) to initialize the project:
|
To get started with Dojo on Vercel, you can use the [Dojo CLI](https://github.com/dojo/cli) to initialize the project:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ now init dojo
|
$ vercel init dojo
|
||||||
```
|
|
||||||
|
|
||||||
### Deploying From Your Terminal
|
|
||||||
|
|
||||||
Once initialized, you can deploy the Dojo example with just a single command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ now
|
|
||||||
```
|
```
|
||||||
|
|||||||