Merge pull request #5 from nimbus-gui/ra.add-gh-pages

ci: add step for deploying storybook to gh-pages
This commit is contained in:
Rickard Andersson 2023-08-21 15:38:31 +03:00 committed by GitHub
commit 6fea24e88f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 331 additions and 11 deletions

71
.github/workflows/deploy-storybook.yaml vendored Normal file
View File

@ -0,0 +1,71 @@
name: 'Deploy Storybook'
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
cache-dependencies:
runs-on: ubuntu-latest
steps:
- name: Checkout Commit
uses: actions/checkout@v2
- name: Cache yarn dependencies and cypress
uses: actions/cache@v2
id: yarn-cache
with:
path: |
~/.cache/Cypress
node_modules
key: ${{ runner.os }}-yarn-v3-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-v3
- name: Install dependencies if cache invalid
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn
build-and-deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: cache-dependencies
steps:
- uses: actions/setup-node@v2
with:
node-version: '18.x'
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Restore yarn dependencies
uses: actions/cache@v2
id: yarn-cache
with:
path: |
~/.cache/Cypress
node_modules
key: ${{ runner.os }}-yarn-v3-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-v3
- name: Install Playwright
run: npx playwright install --with-deps
- name: Build Storybook
run: yarn build-storybook --quiet
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: './storybook-static'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
- uses: actions/checkout@v2

View File

@ -65,7 +65,7 @@ jobs:
run: npx playwright install --with-deps
- name: Build Storybook
run: yarn build-storybook --quiet
- name: Serve Storybook and run tests
- name: Run Storybook tests
run: |
npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
"npx http-server storybook-static --port 6006 --silent" \

0
.nojekyll Normal file
View File

View File

@ -16,6 +16,14 @@ const config: StorybookConfig = {
docs: {
autodocs: 'tag',
},
async viteFinal(config, { configType }) {
if (configType === 'PRODUCTION') {
config.base = './'
}
return config
},
}
export default config

View File

@ -2,6 +2,7 @@
"name": "nimbus-gui",
"private": true,
"version": "0.0.0",
"homepage": "https://nimbus-gui.github.io/nimbus-gui",
"scripts": {
"dev": "NODE_ENV=development vite",
"build": "tsc -p . && vite build",
@ -9,7 +10,8 @@
"preview": "vite preview",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"test-storybook": "test-storybook"
"test-storybook": "test-storybook",
"deploy-storybook": "gh-pages -d storybook-static -t true"
},
"resolutions": {
"@tamagui/web": "1.36.4",
@ -47,6 +49,7 @@
"@storybook/cli": "^7.2.0",
"@storybook/react": "^7.2.0",
"@storybook/react-vite": "^7.2.0",
"@storybook/storybook-deployer": "^2.8.16",
"@storybook/test-runner": "^0.12.0",
"@storybook/testing-library": "^0.2.0",
"@types/react-color": "^3.0.6",
@ -58,6 +61,7 @@
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"eslint-plugin-storybook": "^0.6.13",
"gh-pages": "^6.0.0",
"prettier": "^3.0.1",
"storybook": "^7.2.0",
"storybook-addon-react-router-v6": "^2.0.5",

255
yarn.lock
View File

@ -5182,6 +5182,22 @@ __metadata:
languageName: node
linkType: hard
"@storybook/storybook-deployer@npm:^2.8.16":
version: 2.8.16
resolution: "@storybook/storybook-deployer@npm:2.8.16"
dependencies:
git-url-parse: ^12.0.0
glob: ^7.1.3
parse-repo: ^1.0.4
shelljs: ^0.8.1
yargs: ^15.0.0
bin:
storybook-to-aws-s3: bin/storybook_to_aws_s3
storybook-to-ghpages: bin/storybook_to_ghpages
checksum: 06d02d9da9e6242de89436973e0a0d8126bcac5a89e7356815b095073d7c3b8c5ec7e9216183b18a9ec9c120455634a08388ddf67b1192cda748577768f07bd2
languageName: node
linkType: hard
"@storybook/telemetry@npm:7.2.1, @storybook/telemetry@npm:^7.1.0-alpha.32":
version: 7.2.1
resolution: "@storybook/telemetry@npm:7.2.1"
@ -7799,6 +7815,15 @@ __metadata:
languageName: node
linkType: hard
"array-union@npm:^1.0.1":
version: 1.0.2
resolution: "array-union@npm:1.0.2"
dependencies:
array-uniq: ^1.0.1
checksum: 82cec6421b6e6766556c484835a6d476a873f1b71cace5ab2b4f1b15b1e3162dc4da0d16f7a2b04d4aec18146c6638fe8f661340b31ba8e469fd811a1b45dc8d
languageName: node
linkType: hard
"array-union@npm:^2.1.0":
version: 2.1.0
resolution: "array-union@npm:2.1.0"
@ -7806,6 +7831,13 @@ __metadata:
languageName: node
linkType: hard
"array-uniq@npm:^1.0.1":
version: 1.0.3
resolution: "array-uniq@npm:1.0.3"
checksum: 1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e
languageName: node
linkType: hard
"asap@npm:~2.0.3, asap@npm:~2.0.6":
version: 2.0.6
resolution: "asap@npm:2.0.6"
@ -7866,7 +7898,7 @@ __metadata:
languageName: node
linkType: hard
"async@npm:^3.2.2, async@npm:^3.2.3":
"async@npm:^3.2.2, async@npm:^3.2.3, async@npm:^3.2.4":
version: 3.2.4
resolution: "async@npm:3.2.4"
checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89
@ -8673,6 +8705,13 @@ __metadata:
languageName: node
linkType: hard
"commander@npm:^11.0.0":
version: 11.0.0
resolution: "commander@npm:11.0.0"
checksum: 6621954e1e1d078b4991c1f5bbd9439ad37aa7768d6ab4842de1dbd4d222c8a27e1b8e62108b3a92988614af45031d5bb2a2aaa92951f4d0c934d1a1ac564bb4
languageName: node
linkType: hard
"commander@npm:^2.19.0, commander@npm:^2.20.0":
version: 2.20.3
resolution: "commander@npm:2.20.3"
@ -9523,6 +9562,13 @@ __metadata:
languageName: node
linkType: hard
"email-addresses@npm:^5.0.0":
version: 5.0.0
resolution: "email-addresses@npm:5.0.0"
checksum: e58a510e9caf105313025e1c81488d5391c6404f0bbd7874e8e36a4c14d1ced02ff271748146c13edfa3bd9ce9b25f1194f5369971d77087325f37ab193129bb
languageName: node
linkType: hard
"emittery@npm:^0.10.2":
version: 0.10.2
resolution: "emittery@npm:0.10.2"
@ -9872,7 +9918,7 @@ __metadata:
languageName: node
linkType: hard
"escape-string-regexp@npm:^1.0.5":
"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5":
version: 1.0.5
resolution: "escape-string-regexp@npm:1.0.5"
checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410
@ -10400,6 +10446,24 @@ __metadata:
languageName: node
linkType: hard
"filename-reserved-regex@npm:^2.0.0":
version: 2.0.0
resolution: "filename-reserved-regex@npm:2.0.0"
checksum: 323a0020fd7f243238ffccab9d728cbc5f3a13c84b2c10e01efb09b8324561d7a51776be76f36603c734d4f69145c39a5d12492bf6142a28b50d7f90bd6190bc
languageName: node
linkType: hard
"filenamify@npm:^4.3.0":
version: 4.3.0
resolution: "filenamify@npm:4.3.0"
dependencies:
filename-reserved-regex: ^2.0.0
strip-outer: ^1.0.1
trim-repeated: ^1.0.0
checksum: 5b71a7ff8e958c8621957e6fbf7872024126d3b5da50f59b1634af3343ba1a69d4cc15cfe4ca4bbfa7c959ad4d98614ee51e6f1d9fa7326eef8ceda2da8cd74e
languageName: node
linkType: hard
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
@ -10450,7 +10514,7 @@ __metadata:
languageName: node
linkType: hard
"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.2.0, find-cache-dir@npm:^3.3.2":
"find-cache-dir@npm:^3.0.0, find-cache-dir@npm:^3.2.0, find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2":
version: 3.3.2
resolution: "find-cache-dir@npm:3.3.2"
dependencies:
@ -10666,7 +10730,7 @@ __metadata:
languageName: node
linkType: hard
"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0":
"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1":
version: 11.1.1
resolution: "fs-extra@npm:11.1.1"
dependencies:
@ -10832,6 +10896,24 @@ __metadata:
languageName: node
linkType: hard
"gh-pages@npm:^6.0.0":
version: 6.0.0
resolution: "gh-pages@npm:6.0.0"
dependencies:
async: ^3.2.4
commander: ^11.0.0
email-addresses: ^5.0.0
filenamify: ^4.3.0
find-cache-dir: ^3.3.1
fs-extra: ^11.1.1
globby: ^6.1.0
bin:
gh-pages: bin/gh-pages.js
gh-pages-clean: bin/gh-pages-clean.js
checksum: 031f9070cdcd4fb71a2a8eabec049c885faa17e489a6e37e8f7dfa9bd649607560b0778b8e19a1d9295ebd614668e3854d860d48313cb7b23ee9f3884adef517
languageName: node
linkType: hard
"giget@npm:^1.0.0":
version: 1.1.2
resolution: "giget@npm:1.1.2"
@ -10849,6 +10931,25 @@ __metadata:
languageName: node
linkType: hard
"git-up@npm:^6.0.0":
version: 6.0.0
resolution: "git-up@npm:6.0.0"
dependencies:
is-ssh: ^1.4.0
parse-url: ^7.0.2
checksum: 145a1f546d7a078cdfc2616556e518e634d134e34a31c6bf2ed89e44158659cb525dbd451c338121f7107f55cef066d0b37a7bbf178555befc9304b3940b435e
languageName: node
linkType: hard
"git-url-parse@npm:^12.0.0":
version: 12.0.0
resolution: "git-url-parse@npm:12.0.0"
dependencies:
git-up: ^6.0.0
checksum: b4c8530b816202ecf9d4dabf755f785a314a096b56145018385b3d7171e862f9d0d9b38cce620c0af354b269750fe7b2d9aa95815c7150922090a11dac4ab1e6
languageName: node
linkType: hard
"github-slugger@npm:^1.0.0":
version: 1.5.0
resolution: "github-slugger@npm:1.5.0"
@ -10907,7 +11008,7 @@ __metadata:
languageName: node
linkType: hard
"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0":
"glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
@ -10986,6 +11087,19 @@ __metadata:
languageName: node
linkType: hard
"globby@npm:^6.1.0":
version: 6.1.0
resolution: "globby@npm:6.1.0"
dependencies:
array-union: ^1.0.1
glob: ^7.0.3
object-assign: ^4.0.1
pify: ^2.0.0
pinkie-promise: ^2.0.0
checksum: 18109d6b9d55643d2b98b59c3cfae7073ccfe39829632f353d516cc124d836c2ddebe48a23f04af63d66a621b6d86dd4cbd7e6af906f2458a7fe510ffc4bd424
languageName: node
linkType: hard
"gopd@npm:^1.0.1":
version: 1.0.1
resolution: "gopd@npm:1.0.1"
@ -11422,6 +11536,13 @@ __metadata:
languageName: node
linkType: hard
"interpret@npm:^1.0.0":
version: 1.4.0
resolution: "interpret@npm:1.4.0"
checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155
languageName: node
linkType: hard
"invariant@npm:*, invariant@npm:^2.2.4":
version: 2.2.4
resolution: "invariant@npm:2.2.4"
@ -11744,6 +11865,15 @@ __metadata:
languageName: node
linkType: hard
"is-ssh@npm:^1.4.0":
version: 1.4.0
resolution: "is-ssh@npm:1.4.0"
dependencies:
protocols: ^2.0.1
checksum: 75eaa17b538bee24b661fbeb0f140226ac77e904a6039f787bea418431e2162f1f9c4c4ccad3bd169e036cd701cc631406e8c505d9fa7e20164e74b47f86f40f
languageName: node
linkType: hard
"is-stream@npm:^2.0.0":
version: 2.0.1
resolution: "is-stream@npm:2.0.1"
@ -13830,6 +13960,7 @@ __metadata:
"@storybook/cli": ^7.2.0
"@storybook/react": ^7.2.0
"@storybook/react-vite": ^7.2.0
"@storybook/storybook-deployer": ^2.8.16
"@storybook/test-runner": ^0.12.0
"@storybook/testing-library": ^0.2.0
"@tamagui/config": 1.36.4
@ -13847,6 +13978,7 @@ __metadata:
eslint-plugin-react-refresh: ^0.4.3
eslint-plugin-storybook: ^0.6.13
expo-modules-core: ^1.5.9
gh-pages: ^6.0.0
prettier: ^3.0.1
react: 18
react-color: ^2.19.3
@ -13995,6 +14127,13 @@ __metadata:
languageName: node
linkType: hard
"normalize-url@npm:^6.1.0":
version: 6.1.0
resolution: "normalize-url@npm:6.1.0"
checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50
languageName: node
linkType: hard
"npm-run-path@npm:^4.0.1":
version: 4.0.1
resolution: "npm-run-path@npm:4.0.1"
@ -14076,7 +14215,7 @@ __metadata:
languageName: node
linkType: hard
"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
@ -14354,6 +14493,34 @@ __metadata:
languageName: node
linkType: hard
"parse-path@npm:^5.0.0":
version: 5.0.0
resolution: "parse-path@npm:5.0.0"
dependencies:
protocols: ^2.0.0
checksum: e9f670559cd8e535f39f548bf5d41ad96a220190ea98df33d0babd9dfaa7c3c70ee2e55394078517d5e7e93c6a39c8eac1261ed3f9e68033656614fc954262e8
languageName: node
linkType: hard
"parse-repo@npm:^1.0.4":
version: 1.0.4
resolution: "parse-repo@npm:1.0.4"
checksum: b0d32a182cdb2287adfb1d9141f7f694890e0ad659e80f75ec2e266339c5a728328f08cb72caf85cb7524b5dbbc4122b17efdd48e0d17d96ed9863ec512e0141
languageName: node
linkType: hard
"parse-url@npm:^7.0.2":
version: 7.0.2
resolution: "parse-url@npm:7.0.2"
dependencies:
is-ssh: ^1.4.0
normalize-url: ^6.1.0
parse-path: ^5.0.0
protocols: ^2.0.1
checksum: 3e26852706bebe9fac409909316716dee52883d2fb5c82d65577effba1507abb7bc42bb59ce0ba6c8659168fb99acf89000bd8fe096ed3ad7124fa85227436d7
languageName: node
linkType: hard
"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3":
version: 1.3.3
resolution: "parseurl@npm:1.3.3"
@ -14466,6 +14633,13 @@ __metadata:
languageName: node
linkType: hard
"pify@npm:^2.0.0":
version: 2.3.0
resolution: "pify@npm:2.3.0"
checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba
languageName: node
linkType: hard
"pify@npm:^4.0.1":
version: 4.0.1
resolution: "pify@npm:4.0.1"
@ -14473,6 +14647,22 @@ __metadata:
languageName: node
linkType: hard
"pinkie-promise@npm:^2.0.0":
version: 2.0.1
resolution: "pinkie-promise@npm:2.0.1"
dependencies:
pinkie: ^2.0.0
checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca
languageName: node
linkType: hard
"pinkie@npm:^2.0.0":
version: 2.0.4
resolution: "pinkie@npm:2.0.4"
checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db
languageName: node
linkType: hard
"pirates@npm:^3.0.2":
version: 3.0.2
resolution: "pirates@npm:3.0.2"
@ -14720,6 +14910,13 @@ __metadata:
languageName: node
linkType: hard
"protocols@npm:^2.0.0, protocols@npm:^2.0.1":
version: 2.0.1
resolution: "protocols@npm:2.0.1"
checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4
languageName: node
linkType: hard
"proxy-addr@npm:~2.0.7":
version: 2.0.7
resolution: "proxy-addr@npm:2.0.7"
@ -15381,6 +15578,15 @@ __metadata:
languageName: node
linkType: hard
"rechoir@npm:^0.6.2":
version: 0.6.2
resolution: "rechoir@npm:0.6.2"
dependencies:
resolve: ^1.1.6
checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b
languageName: node
linkType: hard
"redux-thunk@npm:^2.4.2":
version: 2.4.2
resolution: "redux-thunk@npm:2.4.2"
@ -15601,7 +15807,7 @@ __metadata:
languageName: node
linkType: hard
"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1":
"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1":
version: 1.22.4
resolution: "resolve@npm:1.22.4"
dependencies:
@ -15614,7 +15820,7 @@ __metadata:
languageName: node
linkType: hard
"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>":
"resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>":
version: 1.22.4
resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin<compat/resolve>::version=1.22.4&hash=c3c19d"
dependencies:
@ -15906,6 +16112,19 @@ __metadata:
languageName: node
linkType: hard
"shelljs@npm:^0.8.1":
version: 0.8.5
resolution: "shelljs@npm:0.8.5"
dependencies:
glob: ^7.0.0
interpret: ^1.0.0
rechoir: ^0.6.2
bin:
shjs: bin/shjs
checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748
languageName: node
linkType: hard
"side-channel@npm:^1.0.4":
version: 1.0.4
resolution: "side-channel@npm:1.0.4"
@ -16349,6 +16568,15 @@ __metadata:
languageName: node
linkType: hard
"strip-outer@npm:^1.0.1":
version: 1.0.1
resolution: "strip-outer@npm:1.0.1"
dependencies:
escape-string-regexp: ^1.0.2
checksum: f8d65d33ca2b49aabc66bb41d689dda7b8b9959d320e3a40a2ef4d7079ff2f67ffb72db43f179f48dbf9495c2e33742863feab7a584d180fa62505439162c191
languageName: node
linkType: hard
"strnum@npm:^1.0.5":
version: 1.0.5
resolution: "strnum@npm:1.0.5"
@ -16692,6 +16920,15 @@ __metadata:
languageName: node
linkType: hard
"trim-repeated@npm:^1.0.0":
version: 1.0.0
resolution: "trim-repeated@npm:1.0.0"
dependencies:
escape-string-regexp: ^1.0.2
checksum: e25c235305b82c43f1d64a67a71226c406b00281755e4c2c4f3b1d0b09c687a535dd3c4483327f949f28bb89dc400a0bc5e5b749054f4b99f49ebfe48ba36496
languageName: node
linkType: hard
"ts-api-utils@npm:^1.0.1":
version: 1.0.1
resolution: "ts-api-utils@npm:1.0.1"
@ -17576,7 +17813,7 @@ __metadata:
languageName: node
linkType: hard
"yargs@npm:^15.0.2, yargs@npm:^15.1.0":
"yargs@npm:^15.0.0, yargs@npm:^15.0.2, yargs@npm:^15.1.0":
version: 15.4.1
resolution: "yargs@npm:15.4.1"
dependencies: