Compare commits
13 Commits
@verdaccio
...
@verdaccio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d73ad92fa1 | ||
|
|
b4baa10ac0 | ||
|
|
f58f886c48 | ||
|
|
9997879743 | ||
|
|
86d813840d | ||
|
|
c856597e2c | ||
|
|
9b761945df | ||
|
|
c353839683 | ||
|
|
d0829623aa | ||
|
|
d08ffb6e34 | ||
|
|
294018443e | ||
|
|
2b8c2aee07 | ||
|
|
176dee9757 |
27
.changeset/orange-cows-pull.md
Normal file
27
.changeset/orange-cows-pull.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
'@verdaccio/types': major
|
||||
'@verdaccio/ui-theme': major
|
||||
'@verdaccio/ui-components': major
|
||||
---
|
||||
|
||||
feat(web): components for custom user interfaces
|
||||
|
||||
Provides a package that includes all components from the user interface, instead being embedded at the `@verdaccio/ui-theme` package.
|
||||
|
||||
```
|
||||
npm i -D @verdaccio/ui-components
|
||||
```
|
||||
|
||||
The package contains
|
||||
|
||||
- Components
|
||||
- Providers
|
||||
- Redux Storage
|
||||
- Layouts (precomposed layouts ready to use)
|
||||
- Custom Material Theme
|
||||
|
||||
The `@verdaccio/ui-theme` will consume this package and will use only those are need it.
|
||||
|
||||
> Prerequisites are using Redux, Material-UI and Translations with `i18next`.
|
||||
|
||||
Users could have their own Material UI theme and build custom layouts, adding new features without the need to modify the default project.
|
||||
@@ -33,8 +33,9 @@
|
||||
"@verdaccio/cli-standalone": "6.0.0-alpha.3",
|
||||
"@verdaccio/tarball": "11.0.0-alpha.3",
|
||||
"@verdaccio/url": "11.0.0-alpha.3",
|
||||
"@verdaccio/ui-components": "2.0.0-alpha.0",
|
||||
"@verdaccio/server-fastify": "6.0.0-6-next.9",
|
||||
"@verdaccio/eslint-config": "1.0.0",
|
||||
"@verdaccio/eslint-config": "2.0.0-alpha.0",
|
||||
"@verdaccio/core": "6.0.0-next.0",
|
||||
"@verdaccio/test-helper": "1.0.0",
|
||||
"docusaurus-plugin-contributors": "1.0.0",
|
||||
@@ -105,6 +106,7 @@
|
||||
"neat-toes-report",
|
||||
"neat-toys-float",
|
||||
"olive-candles-speak",
|
||||
"orange-cows-pull",
|
||||
"orange-flowers-cover",
|
||||
"perfect-candles-clap",
|
||||
"perfect-emus-clean",
|
||||
|
||||
@@ -14,3 +14,7 @@ test/functional/store/*
|
||||
docker-examples/**/lib/**/*.js
|
||||
test/cli/e2e-yarn4/bin/yarn-4.0.0-rc.14.cjs
|
||||
yarn.js
|
||||
# storybook
|
||||
packages/ui-components/storybook-static
|
||||
dist.js
|
||||
bundle.js
|
||||
|
||||
10
.github/workflows/ci-windows.yml
vendored
10
.github/workflows/ci-windows.yml
vendored
@@ -32,7 +32,7 @@ jobs:
|
||||
- name: Install
|
||||
run: pnpm recursive install --frozen-lockfile --registry http://localhost:4873
|
||||
- name: Cache .pnpm-store
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -95,7 +95,7 @@ jobs:
|
||||
node-version: ${{ matrix.node_version }}
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
|
||||
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@@ -43,7 +43,7 @@ jobs:
|
||||
- name: Install
|
||||
run: pnpm recursive install --frozen-lockfile --registry http://localhost:4873
|
||||
- name: Cache .pnpm-store
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
run: |
|
||||
corepack enable
|
||||
corepack prepare --activate pnpm@6.32.15
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
run: |
|
||||
corepack enable
|
||||
corepack prepare --activate pnpm@6.32.15
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -112,7 +112,7 @@ jobs:
|
||||
run: |
|
||||
corepack enable
|
||||
corepack prepare --activate pnpm@6.32.15
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
@@ -136,7 +136,7 @@ jobs:
|
||||
run: |
|
||||
corepack enable
|
||||
corepack prepare --activate pnpm@6.32.15
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
|
||||
10
.github/workflows/e2e-ci.yml
vendored
10
.github/workflows/e2e-ci.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
- name: Install
|
||||
run: pnpm recursive install --frozen-lockfile --reporter=silence --ignore-scripts --registry http://localhost:4873
|
||||
- name: Cache .pnpm-store
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
- name: build
|
||||
run: pnpm build
|
||||
- name: Cache packages
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
id: cache-packages
|
||||
with:
|
||||
path: ./packages/
|
||||
@@ -85,13 +85,13 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
- name: Install pnpm
|
||||
run: npm i pnpm@6.32.15 -g
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
|
||||
- name: Install
|
||||
run: pnpm recursive install --offline --frozen-lockfile --reporter=silence --ignore-scripts --registry http://localhost:4873
|
||||
- uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
- uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: ./packages/
|
||||
key: pkg-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.run_id }}-${{ github.sha }}
|
||||
|
||||
75
.github/workflows/ui-components.yml
vendored
Normal file
75
.github/workflows/ui-components.yml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
name: UI Components
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/ui-components.yml
|
||||
- 'packages/ui-components/**'
|
||||
- 'package.json'
|
||||
- 'pnpm-workspace.yaml'
|
||||
- 'pnpm-lock.yaml'
|
||||
|
||||
permissions:
|
||||
contents: read # to fetch code (actions/checkout)
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
permissions:
|
||||
contents: read # to fetch code (actions/checkout)
|
||||
deployments: write
|
||||
pull-requests: write # to comment on pull-requests
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
NODE_OPTIONS: --max_old_space_size=4096
|
||||
steps:
|
||||
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
||||
|
||||
- name: Use Node
|
||||
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Cache pnpm modules
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
env:
|
||||
cache-name: cache-pnpm-modules
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-
|
||||
|
||||
- name: Install pnpm
|
||||
run: |
|
||||
corepack enable
|
||||
corepack prepare --activate pnpm@6.32.15
|
||||
- name: Install
|
||||
run: pnpm recursive install --frozen-lockfile
|
||||
- name: Build storybook
|
||||
run: pnpm ui:storybook:build
|
||||
- name: Copy public content
|
||||
# the msw.js worker is need it at the storybook-static folder in production
|
||||
run: cp -R packages/ui-components/public/* packages/ui-components/storybook-static
|
||||
- name: 🔥 Deploy Production UI Netlify
|
||||
if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'workflow_dispatch'
|
||||
uses: verdaccio/action-netlify-deploy@1a53f098745bf78555d11b436f5ee3af87e6b566
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
||||
netlify-site-id: ${{ secrets.NETLIFY_UI_SITE_ID }}
|
||||
build-dir: './packages/ui-components/storybook-static'
|
||||
- name: 🤖 Deploy Preview UI Components Netlify
|
||||
if: github.repository == 'verdaccio/verdaccio'
|
||||
uses: verdaccio/action-netlify-deploy@1a53f098745bf78555d11b436f5ee3af87e6b566
|
||||
id: netlify_preview_ui
|
||||
with:
|
||||
draft: true
|
||||
comment-on-pull-request: true
|
||||
github-deployment-is-production: false
|
||||
github-deployment-is-transient: true
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
||||
netlify-site-id: ${{ secrets.NETLIFY_UI_SITE_ID }}
|
||||
build-dir: './packages/ui-components/storybook-static'
|
||||
4
.github/workflows/website.yml
vendored
4
.github/workflows/website.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
node-version: 16
|
||||
|
||||
- name: Cache pnpm modules
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
env:
|
||||
cache-name: cache-pnpm-modules
|
||||
with:
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
- name: Build Translations percentage
|
||||
run: pnpm build --filter "@verdaccio/crowdin-translations"
|
||||
- name: Cache Docusaurus Build
|
||||
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # tag=v3
|
||||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3
|
||||
with:
|
||||
path: website/node_modules/.cache/webpack
|
||||
key: cache/webpack-${{github.ref}}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
|
||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -41,13 +41,6 @@ packages/plugins/ui-theme/static
|
||||
# CI Pnpm cache
|
||||
.pnpm-store/
|
||||
|
||||
# benchmark
|
||||
api-results.json
|
||||
hyper-results.json
|
||||
hyper-results*.json
|
||||
api-results*.json
|
||||
.clinic/
|
||||
|
||||
#docs
|
||||
website/docs/api/**/*.md
|
||||
website/docs/api/**/*.yml
|
||||
@@ -57,3 +50,6 @@ packages/**/docs
|
||||
# cypress
|
||||
e2e/ui/cypress/videos/**/*
|
||||
e2e/ui/cypress/screenshots/**/*
|
||||
|
||||
# storybook
|
||||
packages/ui-components/storybook-static
|
||||
|
||||
@@ -35,3 +35,5 @@ packages/plugins/ui-theme/static/
|
||||
.verdaccio-db.json
|
||||
test/cli/e2e-yarn4/bin/yarn-4.0.0-rc.14.cjs
|
||||
yarn.js
|
||||
website/docs/api/*
|
||||
packages/ui-components/storybook-static/*
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"yaml": "2.1.3",
|
||||
"verdaccio": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"yaml": "2.2.0",
|
||||
"debug": "4.3.4",
|
||||
"fs-extra": "10.1.0",
|
||||
"got": "11.8.5",
|
||||
"got": "11.8.6",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.5",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.0.1-6-next.5",
|
||||
"npm": "6.14.17"
|
||||
"npm": "6.14.18"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.5",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.0.1-6-next.5",
|
||||
"npm": "9.1.2"
|
||||
"npm": "9.2.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "1.0.1-6-next.5",
|
||||
"dependencies": {
|
||||
"@verdaccio/test-cli-commons": "workspace:1.0.1-6-next.5",
|
||||
"@yarnpkg/cli-dist": "3.3.0"
|
||||
"@yarnpkg/cli-dist": "3.3.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
"name": "@verdaccio/e2e-ui",
|
||||
"version": "2.0.0-6-next.3",
|
||||
"devDependencies": {
|
||||
"verdaccio": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"verdaccio": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.6",
|
||||
"debug": "4.3.4",
|
||||
"cypress": "11.1.0"
|
||||
"cypress": "11.2.0"
|
||||
},
|
||||
"scripts": {
|
||||
"cypress:open": "cypress open",
|
||||
|
||||
58
package.json
58
package.json
@@ -15,51 +15,51 @@
|
||||
"url": "https://opencollective.com/verdaccio"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.19.3",
|
||||
"@babel/core": "7.20.2",
|
||||
"@babel/node": "7.20.2",
|
||||
"@babel/cli": "7.20.7",
|
||||
"@babel/core": "7.20.7",
|
||||
"@babel/node": "7.20.7",
|
||||
"@babel/plugin-proposal-class-properties": "7.18.6",
|
||||
"@babel/plugin-proposal-decorators": "7.20.2",
|
||||
"@babel/plugin-proposal-decorators": "7.20.7",
|
||||
"@babel/plugin-proposal-export-namespace-from": "7.18.9",
|
||||
"@babel/plugin-proposal-function-sent": "7.18.6",
|
||||
"@babel/plugin-proposal-json-strings": "7.18.6",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
|
||||
"@babel/plugin-proposal-numeric-separator": "7.18.6",
|
||||
"@babel/plugin-proposal-object-rest-spread": "7.20.2",
|
||||
"@babel/plugin-proposal-optional-chaining": "7.18.9",
|
||||
"@babel/plugin-proposal-object-rest-spread": "7.20.7",
|
||||
"@babel/plugin-proposal-optional-chaining": "7.20.7",
|
||||
"@babel/plugin-proposal-throw-expressions": "7.18.6",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/plugin-syntax-import-meta": "7.10.4",
|
||||
"@babel/plugin-transform-async-to-generator": "7.18.6",
|
||||
"@babel/plugin-transform-classes": "7.20.2",
|
||||
"@babel/plugin-transform-async-to-generator": "7.20.7",
|
||||
"@babel/plugin-transform-classes": "7.20.7",
|
||||
"@babel/plugin-transform-runtime": "7.19.6",
|
||||
"@babel/preset-env": "7.20.2",
|
||||
"@babel/preset-react": "7.18.6",
|
||||
"@babel/preset-typescript": "7.18.6",
|
||||
"@babel/register": "7.18.9",
|
||||
"@babel/runtime": "7.20.1",
|
||||
"@babel/runtime": "7.20.7",
|
||||
"@dianmora/contributors": "5.0.0",
|
||||
"@changesets/changelog-github": "0.4.7",
|
||||
"@changesets/changelog-github": "0.4.8",
|
||||
"@changesets/cli": "2.24.4",
|
||||
"@changesets/get-dependents-graph": "1.3.4",
|
||||
"@changesets/get-dependents-graph": "1.3.5",
|
||||
"@crowdin/cli": "3.9.1",
|
||||
"@emotion/react": "11.10.5",
|
||||
"@emotion/styled": "11.10.5",
|
||||
"@mui/material": "5.11.1",
|
||||
"@testing-library/dom": "8.19.1",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"@testing-library/react": "12.1.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"@mui/icons-material": "5.11.0",
|
||||
"@mui/styles": "5.11.1",
|
||||
"@mui/system": "5.11.1",
|
||||
"@trivago/prettier-plugin-sort-imports": "3.4.0",
|
||||
"@types/async": "3.2.15",
|
||||
"@types/express": "4.17.14",
|
||||
"@types/async": "3.2.16",
|
||||
"@types/express": "4.17.15",
|
||||
"@types/http-errors": "1.8.2",
|
||||
"@types/jest": "27.5.2",
|
||||
"@types/lodash": "4.14.189",
|
||||
"@types/lodash": "4.14.191",
|
||||
"@types/mime": "2.0.3",
|
||||
"@types/minimatch": "3.0.5",
|
||||
"@types/node": "16.18.3",
|
||||
"@types/redux": "3.6.0",
|
||||
"@types/node": "16.18.10",
|
||||
"@types/jsonwebtoken": "8.5.9",
|
||||
"@types/request": "2.48.8",
|
||||
"@types/semver": "7.3.13",
|
||||
@@ -69,12 +69,12 @@
|
||||
"@types/validator": "13.7.10",
|
||||
"@types/webpack": "5.28.0",
|
||||
"@types/webpack-env": "1.18.0",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react": "18.0.26",
|
||||
"@types/react-dom": "18.0.9",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/react-virtualized": "9.21.21",
|
||||
"@typescript-eslint/eslint-plugin": "5.41.0",
|
||||
"@typescript-eslint/parser": "5.41.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.47.0",
|
||||
"@typescript-eslint/parser": "5.47.0",
|
||||
"@verdaccio/crowdin-translations": "workspace:*",
|
||||
"@verdaccio/eslint-config": "workspace:*",
|
||||
"@verdaccio/types": "workspace:*",
|
||||
@@ -85,12 +85,12 @@
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-emotion": "10.2.2",
|
||||
"concurrently": "6.5.1",
|
||||
"core-js": "3.26.1",
|
||||
"core-js": "3.27.0",
|
||||
"cross-env": "7.0.3",
|
||||
"debug": "4.3.4",
|
||||
"detect-secrets": "1.0.6",
|
||||
"jest-diff": "29.3.1",
|
||||
"eslint": "8.26.0",
|
||||
"eslint": "8.30.0",
|
||||
"fs-extra": "10.1.0",
|
||||
"husky": "7.0.4",
|
||||
"in-publish": "2.0.1",
|
||||
@@ -101,16 +101,16 @@
|
||||
"jest-junit": "12.3.0",
|
||||
"kleur": "3.0.3",
|
||||
"lint-staged": "11.2.6",
|
||||
"got": "11.8.5",
|
||||
"got": "11.8.6",
|
||||
"nock": "13.2.9",
|
||||
"nodemon": "2.0.20",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.7.1",
|
||||
"prettier": "2.8.1",
|
||||
"rimraf": "3.0.2",
|
||||
"selfsigned": "1.10.14",
|
||||
"supertest": "6.3.1",
|
||||
"supertest": "6.3.3",
|
||||
"ts-node": "10.9.1",
|
||||
"typescript": "4.9.3",
|
||||
"typescript": "4.9.4",
|
||||
"update-ts-references": "2.4.1",
|
||||
"verdaccio-audit": "workspace:*",
|
||||
"verdaccio-auth-memory": "workspace:*",
|
||||
@@ -149,6 +149,8 @@
|
||||
"ci:publish": "changeset publish",
|
||||
"ts:ref": "update-ts-references --discardComments",
|
||||
"website": "pnpm build --filter ...@verdaccio/website",
|
||||
"ui:storybook:build": "pnpm build-storybook --filter ...@verdaccio/ui-components",
|
||||
"ui:storybook": "pnpm storybook --filter ...@verdaccio/ui-components",
|
||||
"translations": "local-crowdin-api translations",
|
||||
"crowdin:upload": "crowdin upload sources --auto-update --config ./crowdin.yaml",
|
||||
"crowdin:download": "crowdin download --verbose --config ./crowdin.yaml",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @verdaccio/api
|
||||
|
||||
## 6.0.0-6-next.36
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/auth@6.0.0-6-next.32
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- @verdaccio/store@6.0.0-6-next.33
|
||||
- @verdaccio/config@6.0.0-6-next.53
|
||||
- @verdaccio/middleware@6.0.0-6-next.32
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.35
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/api",
|
||||
"version": "6.0.0-6-next.35",
|
||||
"version": "6.0.0-6-next.36",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -39,13 +39,13 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/middleware": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/store": "workspace:6.0.0-6-next.33",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"abortcontroller-polyfill": "1.7.5",
|
||||
"cookies": "0.8.0",
|
||||
"debug": "4.3.4",
|
||||
@@ -56,11 +56,11 @@
|
||||
"semver": "7.3.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.41",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.42",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.6",
|
||||
"supertest": "6.3.1",
|
||||
"supertest": "6.3.3",
|
||||
"nock": "13.2.9",
|
||||
"mockdate": "3.0.5"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @verdaccio/auth
|
||||
|
||||
## 6.0.0-6-next.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/loaders@6.0.0-6-next.22
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- verdaccio-htpasswd@11.0.0-6-next.23
|
||||
- @verdaccio/config@6.0.0-6-next.53
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/auth",
|
||||
"version": "6.0.0-6-next.31",
|
||||
"version": "6.0.0-6-next.32",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -39,19 +39,19 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/loaders": "workspace:6.0.0-6-next.22",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"debug": "4.3.4",
|
||||
"express": "4.18.2",
|
||||
"jsonwebtoken": "8.5.1",
|
||||
"jsonwebtoken": "9.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.22"
|
||||
"verdaccio-htpasswd": "workspace:11.0.0-6-next.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @verdaccio/cli
|
||||
|
||||
## 6.0.0-6-next.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- @verdaccio/node-api@6.0.0-6-next.53
|
||||
- @verdaccio/config@6.0.0-6-next.53
|
||||
|
||||
## 6.0.0-6-next.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/cli",
|
||||
"version": "6.0.0-6-next.52",
|
||||
"version": "6.0.0-6-next.53",
|
||||
"author": {
|
||||
"name": "Juan Picado",
|
||||
"email": "juanpicado19@gmail.com"
|
||||
@@ -44,10 +44,10 @@
|
||||
"start": "ts-node src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.53",
|
||||
"clipanion": "3.1.0",
|
||||
"envinfo": "7.8.1",
|
||||
"kleur": "3.0.3",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @verdaccio/config
|
||||
|
||||
## 6.0.0-6-next.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/config",
|
||||
"version": "6.0.0-6-next.52",
|
||||
"version": "6.0.0-6-next.53",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -39,10 +39,10 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"debug": "4.3.4",
|
||||
"yaml": "2.1.3",
|
||||
"yaml": "2.2.0",
|
||||
"lodash": "4.17.21",
|
||||
"minimatch": "3.1.2",
|
||||
"yup": "0.32.11"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# @verdaccio/core
|
||||
|
||||
## 6.0.0-6-next.53
|
||||
|
||||
## 6.0.0-6-next.52
|
||||
|
||||
## 6.0.0-6-next.51
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/core",
|
||||
"version": "6.0.0-6-next.52",
|
||||
"version": "6.0.0-6-next.53",
|
||||
"description": "core utilities",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -39,13 +39,13 @@
|
||||
"semver": "7.3.8",
|
||||
"ajv": "8.11.2",
|
||||
"process-warning": "1.0.0",
|
||||
"core-js": "3.26.1"
|
||||
"core-js": "3.27.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"lodash": "4.17.21",
|
||||
"typedoc": "0.23.21",
|
||||
"typedoc": "0.23.23",
|
||||
"typedoc-plugin-missing-exports": "latest",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"lockfile": "1.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/url@11.0.0-6-next.19
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 11.0.0-6-next.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/tarball",
|
||||
"version": "11.0.0-6-next.21",
|
||||
"version": "11.0.0-6-next.22",
|
||||
"description": "tarball utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -35,13 +35,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "4.3.4",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/url": "workspace:11.0.0-6-next.19",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"node-mocks-http": "1.12.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.18
|
||||
|
||||
### Major Changes
|
||||
|
||||
- 99978797: feat(web): components for custom user interfaces
|
||||
|
||||
Provides a package that includes all components from the user interface, instead being embedded at the `@verdaccio/ui-theme` package.
|
||||
|
||||
```
|
||||
npm i -D @verdaccio/ui-components
|
||||
```
|
||||
|
||||
The package contains
|
||||
|
||||
- Components
|
||||
- Providers
|
||||
- Redux Storage
|
||||
- Layouts (precomposed layouts ready to use)
|
||||
- Custom Material Theme
|
||||
|
||||
The `@verdaccio/ui-theme` will consume this package and will use only those are need it.
|
||||
|
||||
> Prerequisites are using Redux, Material-UI and Translations with `i18next`.
|
||||
|
||||
Users could have their own Material UI theme and build custom layouts, adding new features without the need to modify the default project.
|
||||
|
||||
## 11.0.0-6-next.17
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/types",
|
||||
"version": "11.0.0-6-next.17",
|
||||
"version": "11.0.0-6-next.18",
|
||||
"description": "verdaccio types definitions",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -41,8 +41,8 @@
|
||||
"build": "tsc --emitDeclarationOnly -p tsconfig.build.json"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"typedoc": "0.23.21"
|
||||
"@types/node": "16.18.10",
|
||||
"typedoc": "0.23.23"
|
||||
},
|
||||
"typedoc": {
|
||||
"entryPoint": "./src/types.ts",
|
||||
|
||||
@@ -126,7 +126,7 @@ export type TemplateUIOptions = {
|
||||
showDownloadTarball?: boolean;
|
||||
showRaw?: boolean;
|
||||
base: string;
|
||||
primaryColor?: string;
|
||||
primaryColor: string;
|
||||
version?: string;
|
||||
logoURI?: string;
|
||||
flags: FlagsConfig;
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
|
||||
## 11.0.0-6-next.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/url",
|
||||
"version": "11.0.0-6-next.18",
|
||||
"version": "11.0.0-6-next.19",
|
||||
"description": "url utilities resolver",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -34,13 +34,13 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21",
|
||||
"validator": "13.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"node-mocks-http": "1.12.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @verdaccio/hooks
|
||||
|
||||
## 6.0.0-6-next.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/hooks",
|
||||
"version": "6.0.0-6-next.22",
|
||||
"version": "6.0.0-6-next.23",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -30,18 +30,18 @@
|
||||
"npm": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"core-js": "3.26.1",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"core-js": "3.27.0",
|
||||
"debug": "4.3.4",
|
||||
"handlebars": "4.7.7",
|
||||
"undici": "4.16.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @verdaccio/loaders
|
||||
|
||||
## 6.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/loaders",
|
||||
"version": "6.0.0-6-next.21",
|
||||
"version": "6.0.0-6-next.22",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -13,14 +13,14 @@
|
||||
"url": "https://github.com/verdaccio/verdaccio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
||||
"verdaccio-auth-memory": "workspace:*",
|
||||
"customprefix-auth": "1.0.0-6-next.0"
|
||||
|
||||
@@ -39,14 +39,14 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"dayjs": "1.11.6",
|
||||
"dayjs": "1.11.7",
|
||||
"pino-abstract-transport": "1.0.0",
|
||||
"colorette": "2.0.19",
|
||||
"lodash": "4.17.21",
|
||||
"sonic-boom": "3.2.0"
|
||||
"sonic-boom": "3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"pino": "8.7.0"
|
||||
"pino": "8.8.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @verdaccio/logger
|
||||
|
||||
## 6.0.0-6-next.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
|
||||
## 6.0.0-6-next.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/logger",
|
||||
"version": "6.0.0-6-next.20",
|
||||
"version": "6.0.0-6-next.21",
|
||||
"description": "logger",
|
||||
"main": "./build/index.js",
|
||||
"types": "./build/index.d.ts",
|
||||
@@ -39,14 +39,14 @@
|
||||
"build": "pnpm run build:js && pnpm run build:types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger-prettify": "workspace:6.0.0-6-next.7",
|
||||
"debug": "4.3.4",
|
||||
"colorette": "2.0.19",
|
||||
"pino": "8.7.0"
|
||||
"pino": "8.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @verdaccio/middleware
|
||||
|
||||
## 6.0.0-6-next.32
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/auth@6.0.0-6-next.32
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 6.0.0-6-next.31
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/middleware",
|
||||
"version": "6.0.0-6-next.31",
|
||||
"version": "6.0.0-6-next.32",
|
||||
"description": "loaders logic",
|
||||
"main": "./build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -40,10 +40,10 @@
|
||||
"dependencies": {
|
||||
"debug": "4.3.4",
|
||||
"body-parser": "1.20.1",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.32",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"funding": {
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @verdaccio/node-api
|
||||
|
||||
## 6.0.0-6-next.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- @verdaccio/server-fastify@6.0.0-6-next.34
|
||||
- @verdaccio/config@6.0.0-6-next.53
|
||||
- @verdaccio/server@6.0.0-6-next.42
|
||||
|
||||
## 6.0.0-6-next.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/node-api",
|
||||
"version": "6.0.0-6-next.52",
|
||||
"version": "6.0.0-6-next.53",
|
||||
"description": "node API",
|
||||
"main": "build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -39,21 +39,21 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.41",
|
||||
"@verdaccio/server-fastify": "workspace:6.0.0-6-next.33",
|
||||
"core-js": "3.26.1",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/server": "workspace:6.0.0-6-next.42",
|
||||
"@verdaccio/server-fastify": "workspace:6.0.0-6-next.34",
|
||||
"core-js": "3.27.0",
|
||||
"debug": "4.3.4",
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "16.18.3",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@types/node": "16.18.10",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"jest-mock-process": "1.5.1",
|
||||
"selfsigned": "1.10.14",
|
||||
"supertest": "6.3.1"
|
||||
"supertest": "6.3.3"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/logger@6.0.0-6-next.21
|
||||
- @verdaccio/config@6.0.0-6-next.53
|
||||
|
||||
## 11.0.0-6-next.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "verdaccio-audit",
|
||||
"version": "11.0.0-6-next.15",
|
||||
"version": "11.0.0-6-next.16",
|
||||
"description": "Verdaccio Middleware plugin to bypass npmjs audit",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -31,19 +31,19 @@
|
||||
"npm": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"express": "4.18.2",
|
||||
"body-parser": "1.20.1",
|
||||
"https-proxy-agent": "5.0.1",
|
||||
"node-fetch": "cjs"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.31",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/auth": "workspace:6.0.0-6-next.32",
|
||||
"nock": "13.2.9",
|
||||
"supertest": "6.3.1"
|
||||
"supertest": "6.3.3"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
|
||||
## 11.0.0-6-next.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "verdaccio-auth-memory",
|
||||
"version": "11.0.0-6-next.17",
|
||||
"version": "11.0.0-6-next.18",
|
||||
"description": "Auth plugin for Verdaccio that keeps users in memory",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -32,11 +32,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "4.3.4",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52"
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17"
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/file-locking@11.0.0-6-next.6
|
||||
|
||||
## 11.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "verdaccio-htpasswd",
|
||||
"version": "11.0.0-6-next.22",
|
||||
"version": "11.0.0-6-next.23",
|
||||
"description": "htpasswd auth plugin for Verdaccio",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -34,20 +34,20 @@
|
||||
"npm": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/file-locking": "workspace:11.0.0-6-next.6",
|
||||
"apache-md5": "1.1.8",
|
||||
"bcryptjs": "2.4.3",
|
||||
"core-js": "3.26.1",
|
||||
"core-js": "3.27.0",
|
||||
"http-errors": "1.8.1",
|
||||
"debug": "4.3.4",
|
||||
"unix-crypt-td-js": "1.1.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/bcryptjs": "2.4.2",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"mockdate": "3.0.5"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
- @verdaccio/file-locking@11.0.0-6-next.6
|
||||
- @verdaccio/utils@6.0.0-6-next.21
|
||||
|
||||
## 11.0.0-6-next.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/local-storage",
|
||||
"version": "11.0.0-6-next.22",
|
||||
"version": "11.0.0-6-next.23",
|
||||
"description": "Local storage implementation",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -37,10 +37,10 @@
|
||||
"npm": ">=7"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/file-locking": "workspace:11.0.0-6-next.6",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.20",
|
||||
"core-js": "3.26.1",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.21",
|
||||
"core-js": "3.27.0",
|
||||
"debug": "4.3.4",
|
||||
"globby": "11.1.0",
|
||||
"lockfile": "1.0.4",
|
||||
@@ -51,9 +51,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/minimatch": "3.0.5",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20",
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21",
|
||||
"@verdaccio/test-helper": "workspace:2.0.0-6-next.6",
|
||||
"minimatch": "3.1.2"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Change Log
|
||||
|
||||
## 11.0.0-6-next.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @verdaccio/core@6.0.0-6-next.53
|
||||
|
||||
## 11.0.0-6-next.19
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "verdaccio-memory",
|
||||
"version": "11.0.0-6-next.19",
|
||||
"version": "11.0.0-6-next.20",
|
||||
"description": "Storage implementation in memory",
|
||||
"keywords": [
|
||||
"private",
|
||||
@@ -31,15 +31,15 @@
|
||||
"npm": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/core": "workspace:6.0.0-6-next.53",
|
||||
"memory-fs": "0.5.0",
|
||||
"debug": "4.3.4",
|
||||
"memfs": "3.4.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.17",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.20"
|
||||
"@verdaccio/types": "workspace:11.0.0-6-next.18",
|
||||
"@verdaccio/config": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/logger": "workspace:6.0.0-6-next.21"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf ./build",
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @verdaccio/ui-theme
|
||||
|
||||
## 6.0.0-6-next.53
|
||||
|
||||
### Major Changes
|
||||
|
||||
- 99978797: feat(web): components for custom user interfaces
|
||||
|
||||
Provides a package that includes all components from the user interface, instead being embedded at the `@verdaccio/ui-theme` package.
|
||||
|
||||
```
|
||||
npm i -D @verdaccio/ui-components
|
||||
```
|
||||
|
||||
The package contains
|
||||
|
||||
- Components
|
||||
- Providers
|
||||
- Redux Storage
|
||||
- Layouts (precomposed layouts ready to use)
|
||||
- Custom Material Theme
|
||||
|
||||
The `@verdaccio/ui-theme` will consume this package and will use only those are need it.
|
||||
|
||||
> Prerequisites are using Redux, Material-UI and Translations with `i18next`.
|
||||
|
||||
Users could have their own Material UI theme and build custom layouts, adding new features without the need to modify the default project.
|
||||
|
||||
## 6.0.0-6-next.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -35,8 +35,6 @@ module.exports = Object.assign({}, config, {
|
||||
// note: this section has to be on sync with webpack configuration
|
||||
'verdaccio-ui/components/(.*)': '<rootDir>/src/components/$1',
|
||||
'verdaccio-ui/utils/(.*)': '<rootDir>/src/utils/$1',
|
||||
'verdaccio-ui/providers/(.*)': '<rootDir>/src/providers/$1',
|
||||
'verdaccio-ui/design-tokens/(.*)': '<rootDir>/src/design-tokens/$1',
|
||||
'react-markdown': '<rootDir>/src/__mocks__/react-markdown.tsx',
|
||||
'remark-*': '<rootDir>/src/__mocks__/remark-plugin.ts',
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@verdaccio/ui-theme",
|
||||
"version": "6.0.0-6-next.52",
|
||||
"version": "6.0.0-6-next.53",
|
||||
"description": "Verdaccio User Interface",
|
||||
"author": {
|
||||
"name": "Verdaccio Contributors",
|
||||
@@ -12,38 +12,30 @@
|
||||
},
|
||||
"homepage": "https://verdaccio.org",
|
||||
"main": "index.js",
|
||||
"peerDependencies": {
|
||||
"devDependencies": {
|
||||
"@emotion/react": "11.10.5",
|
||||
"@emotion/styled": "11.10.5",
|
||||
"@mui/material": "5.11.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"@mui/icons-material": "5.11.0",
|
||||
"@mui/styles": "5.11.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@mui/styles": "5.11.1",
|
||||
"@mui/material": "5.11.1",
|
||||
"@emotion/babel-plugin": "11.10.5",
|
||||
"@emotion/css": "11.10.5",
|
||||
"@emotion/jest": "11.10.5",
|
||||
"@rematch/core": "2.2.0",
|
||||
"@rematch/loading": "2.1.2",
|
||||
"@rematch/persist": "2.1.2",
|
||||
"@testing-library/dom": "8.19.0",
|
||||
"@testing-library/dom": "8.19.1",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"@testing-library/react": "13.4.0",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "18.0.9",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/react-virtualized": "9.21.21",
|
||||
"@types/redux": "3.6.0",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.52",
|
||||
"@verdaccio/ui-components": "workspace:1.0.0",
|
||||
"@verdaccio/node-api": "workspace:6.0.0-6-next.53",
|
||||
"@verdaccio/ui-components": "workspace:2.0.0-6-next.1",
|
||||
"@verdaccio/types": "workspace:*",
|
||||
"normalize.css": "8.0.1",
|
||||
"babel-loader": "8.3.0",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"country-flag-icons": "1.5.5",
|
||||
"css-loader": "6.7.2",
|
||||
"dayjs": "1.11.6",
|
||||
"css-loader": "6.7.3",
|
||||
"dayjs": "1.11.7",
|
||||
"friendly-errors-webpack-plugin": "1.7.0",
|
||||
"harmony-reflect": "1.6.2",
|
||||
"history": "4.10.1",
|
||||
@@ -54,25 +46,24 @@
|
||||
"js-yaml": "3.14.1",
|
||||
"localstorage-memory": "1.0.3",
|
||||
"lodash": "4.17.21",
|
||||
"mini-css-extract-plugin": "2.7.0",
|
||||
"msw": "0.49.0",
|
||||
"mini-css-extract-plugin": "2.7.2",
|
||||
"msw": "0.49.2",
|
||||
"mutationobserver-shim": "0.3.7",
|
||||
"node-mocks-http": "1.12.1",
|
||||
"normalize.css": "8.0.1",
|
||||
"optimize-css-assets-webpack-plugin": "6.0.1",
|
||||
"ora": "5.4.1",
|
||||
"dompurify": "2.4.1",
|
||||
"highlight.js": "11.6.0",
|
||||
"highlight.js": "11.7.0",
|
||||
"github-markdown-css": "4.0.0",
|
||||
"marked": "4.2.3",
|
||||
"marked": "4.2.5",
|
||||
"raw-loader": "4.0.2",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-hook-form": "7.39.5",
|
||||
"react-hook-form": "7.41.1",
|
||||
"react-hot-loader": "4.13.1",
|
||||
"react-i18next": "12.0.0",
|
||||
"react-i18next": "12.1.1",
|
||||
"react-json-view": "1.21.3",
|
||||
"react-markdown": "8.0.3",
|
||||
"react-markdown": "8.0.4",
|
||||
"react-redux": "7.2.9",
|
||||
"react-router": "5.3.4",
|
||||
"react-router-dom": "5.3.4",
|
||||
@@ -82,12 +73,12 @@
|
||||
"remark-gfm": "3.0.1",
|
||||
"rimraf": "3.0.2",
|
||||
"style-loader": "3.3.1",
|
||||
"stylelint": "14.14.0",
|
||||
"stylelint": "14.16.0",
|
||||
"stylelint-config-recommended": "7.0.0",
|
||||
"stylelint-config-styled-components": "0.1.1",
|
||||
"stylelint-processor-styled-components": "1.10.0",
|
||||
"stylelint-webpack-plugin": "3.3.0",
|
||||
"supertest": "6.3.1",
|
||||
"supertest": "6.3.3",
|
||||
"terser-webpack-plugin": "5.3.6",
|
||||
"url-loader": "4.1.1",
|
||||
"validator": "13.7.0",
|
||||
|
||||
@@ -1,30 +1,9 @@
|
||||
import React from 'react';
|
||||
import { renderWithStore, screen } from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import { store } from '../store';
|
||||
import App from './App';
|
||||
import { store } from '@verdaccio/ui-components';
|
||||
|
||||
jest.mock('verdaccio-ui/utils/storage', () => {
|
||||
class LocalStorageMock {
|
||||
private store: Record<string, string>;
|
||||
public constructor() {
|
||||
this.store = {};
|
||||
}
|
||||
public clear(): void {
|
||||
this.store = {};
|
||||
}
|
||||
public getItem(key: string): unknown {
|
||||
return this.store[key] || null;
|
||||
}
|
||||
public setItem(key: string, value: string): void {
|
||||
this.store[key] = value.toString();
|
||||
}
|
||||
public removeItem(key: string): void {
|
||||
delete this.store[key];
|
||||
}
|
||||
}
|
||||
return new LocalStorageMock();
|
||||
});
|
||||
import App from './App';
|
||||
|
||||
// force the windows to expand to display items
|
||||
// https://github.com/bvaughn/react-virtualized/issues/493#issuecomment-640084107
|
||||
@@ -40,6 +19,7 @@ describe('<App />', () => {
|
||||
});
|
||||
|
||||
test('should not display the Header component', () => {
|
||||
// @ts-ignore
|
||||
window.__VERDACCIO_BASENAME_UI_OPTIONS = {
|
||||
showFooter: false,
|
||||
};
|
||||
|
||||
@@ -1,18 +1,33 @@
|
||||
/* eslint-disable react/jsx-pascal-case */
|
||||
|
||||
/* eslint-disable react/jsx-max-depth */
|
||||
import styled from '@emotion/styled';
|
||||
import Box from '@mui/material/Box';
|
||||
import FlagsIcon from 'country-flag-icons/react/3x2';
|
||||
import React, { StrictMode, Suspense, useEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import ReactMarkdown from 'react-markdown';
|
||||
import { Router } from 'react-router-dom';
|
||||
import Loading from 'verdaccio-ui/components/Loading';
|
||||
import StyleBaseline from 'verdaccio-ui/design-tokens/StyleBaseline';
|
||||
import loadDayJSLocale from 'verdaccio-ui/design-tokens/load-dayjs-locale';
|
||||
import { Theme } from 'verdaccio-ui/design-tokens/theme';
|
||||
import { useConfig } from 'verdaccio-ui/providers/config';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
|
||||
import '../i18n/config';
|
||||
import {
|
||||
Footer,
|
||||
Header,
|
||||
HeaderInfoDialog,
|
||||
Loading,
|
||||
Theme,
|
||||
TranslatorProvider,
|
||||
useConfig,
|
||||
} from '@verdaccio/ui-components';
|
||||
|
||||
import Contributors from '../components/Contributors';
|
||||
import Support from '../components/Support';
|
||||
import about from '../components/about.md';
|
||||
import license from '../components/license.md';
|
||||
import i18n from '../i18n/config';
|
||||
import { listLanguages } from '../i18n/enabledLanguages';
|
||||
import loadDayJSLocale from '../i18n/load-dayjs-locale';
|
||||
import AppRoute, { history } from './AppRoute';
|
||||
import Footer from './Footer';
|
||||
import Header from './Header';
|
||||
|
||||
const StyledBox = styled(Box)<{ theme?: Theme }>(({ theme }) => ({
|
||||
backgroundColor: theme?.palette.background.default,
|
||||
@@ -27,6 +42,45 @@ const StyledBoxContent = styled(Box)<{ theme?: Theme }>(({ theme }) => ({
|
||||
},
|
||||
}));
|
||||
|
||||
const Flags = styled('span')<{ theme?: Theme }>(() => ({
|
||||
width: '25px',
|
||||
}));
|
||||
|
||||
function CustomInfoDialog({ onCloseDialog, title, isOpen }) {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<HeaderInfoDialog
|
||||
dialogTitle={title}
|
||||
isOpen={isOpen}
|
||||
onCloseDialog={onCloseDialog}
|
||||
tabPanels={[
|
||||
{
|
||||
element: (
|
||||
<>
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm]}>{about}</ReactMarkdown>
|
||||
<Contributors />
|
||||
</>
|
||||
),
|
||||
},
|
||||
{ element: <ReactMarkdown remarkPlugins={[remarkGfm]}>{license}</ReactMarkdown> },
|
||||
{ element: <Support /> },
|
||||
]}
|
||||
tabs={[
|
||||
{ label: t('about') },
|
||||
{ label: t('dialog.license') },
|
||||
{
|
||||
label: '',
|
||||
icon: (
|
||||
<Flags>
|
||||
<FlagsIcon.UA />
|
||||
</Flags>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
const App: React.FC = () => {
|
||||
const { configOptions } = useConfig();
|
||||
|
||||
@@ -35,20 +89,23 @@ const App: React.FC = () => {
|
||||
}, []);
|
||||
return (
|
||||
<StrictMode>
|
||||
<Suspense fallback={<Loading />}>
|
||||
<StyleBaseline />
|
||||
<StyledBox display="flex" flexDirection="column" height="100%">
|
||||
<>
|
||||
<TranslatorProvider
|
||||
i18n={i18n}
|
||||
listLanguages={listLanguages}
|
||||
loadDayJSLocale={loadDayJSLocale}
|
||||
>
|
||||
<Suspense fallback={<Loading />}>
|
||||
<StyledBox display="flex" flexDirection="column" height="100%">
|
||||
<Router history={history}>
|
||||
<Header />
|
||||
<Header HeaderInfoDialog={CustomInfoDialog} />
|
||||
<StyledBoxContent flexGrow={1}>
|
||||
<AppRoute />
|
||||
</StyledBoxContent>
|
||||
</Router>
|
||||
{configOptions.showFooter && <Footer />}
|
||||
</>
|
||||
</StyledBox>
|
||||
</Suspense>
|
||||
</StyledBox>
|
||||
</Suspense>
|
||||
</TranslatorProvider>
|
||||
</StrictMode>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -2,26 +2,13 @@ import { createBrowserHistory } from 'history';
|
||||
import React from 'react';
|
||||
import { Route as ReactRouterDomRoute, Router, Switch } from 'react-router-dom';
|
||||
|
||||
import loadable from './utils/loadable';
|
||||
import { NotFound, Route, VersionProvider, loadable } from '@verdaccio/ui-components';
|
||||
|
||||
const NotFound = loadable(
|
||||
() => import(/* webpackChunkName: "NotFound" */ 'verdaccio-ui/components/NotFound')
|
||||
);
|
||||
const VersionContextProvider = loadable(
|
||||
() => import(/* webpackChunkName: "Provider" */ '../pages/Version/VersionContextProvider')
|
||||
);
|
||||
const VersionPage = loadable(() => import(/* webpackChunkName: "Version" */ '../pages/Version'));
|
||||
const HomePage = loadable(() => import(/* webpackChunkName: "Home" */ '../pages/home'));
|
||||
|
||||
enum Route {
|
||||
ROOT = '/',
|
||||
SCOPE_PACKAGE = '/-/web/detail/@:scope/:package',
|
||||
SCOPE_PACKAGE_VERSION = '/-/web/detail/@:scope/:package/v/:version',
|
||||
PACKAGE = '/-/web/detail/:package',
|
||||
PACKAGE_VERSION = '/-/web/detail/:package/v/:version',
|
||||
}
|
||||
const Front = loadable(() => import(/* webpackChunkName: "Home" */ '../pages/Front'));
|
||||
|
||||
export const history = createBrowserHistory({
|
||||
// @ts-ignore
|
||||
basename: window?.__VERDACCIO_BASENAME_UI_OPTIONS?.url_prefix,
|
||||
});
|
||||
|
||||
@@ -30,27 +17,27 @@ const AppRoute: React.FC = () => {
|
||||
<Router history={history}>
|
||||
<Switch>
|
||||
<ReactRouterDomRoute exact={true} path={Route.ROOT}>
|
||||
<HomePage />
|
||||
<Front />
|
||||
</ReactRouterDomRoute>
|
||||
<ReactRouterDomRoute exact={true} path={Route.PACKAGE}>
|
||||
<VersionContextProvider>
|
||||
<VersionProvider>
|
||||
<VersionPage />
|
||||
</VersionContextProvider>
|
||||
</VersionProvider>
|
||||
</ReactRouterDomRoute>
|
||||
<ReactRouterDomRoute exact={true} path={Route.PACKAGE_VERSION}>
|
||||
<VersionContextProvider>
|
||||
<VersionProvider>
|
||||
<VersionPage />
|
||||
</VersionContextProvider>
|
||||
</VersionProvider>
|
||||
</ReactRouterDomRoute>
|
||||
<ReactRouterDomRoute exact={true} path={Route.SCOPE_PACKAGE_VERSION}>
|
||||
<VersionContextProvider>
|
||||
<VersionProvider>
|
||||
<VersionPage />
|
||||
</VersionContextProvider>
|
||||
</VersionProvider>
|
||||
</ReactRouterDomRoute>
|
||||
<ReactRouterDomRoute exact={true} path={Route.SCOPE_PACKAGE}>
|
||||
<VersionContextProvider>
|
||||
<VersionProvider>
|
||||
<VersionPage />
|
||||
</VersionContextProvider>
|
||||
</VersionProvider>
|
||||
</ReactRouterDomRoute>
|
||||
<ReactRouterDomRoute>
|
||||
<NotFound />
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
/* eslint-disable react/jsx-pascal-case */
|
||||
|
||||
/* eslint-disable verdaccio/jsx-spread */
|
||||
import styled from '@emotion/styled';
|
||||
import { Theme } from '@mui/material';
|
||||
import Box from '@mui/material/Box';
|
||||
import Tab from '@mui/material/Tab';
|
||||
import Tabs from '@mui/material/Tabs';
|
||||
import FlagsIcon from 'country-flag-icons/react/3x2';
|
||||
import React from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import ReactMarkdown from 'react-markdown';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
|
||||
import Contributors from './Contributors';
|
||||
import RegistryInfoDialog from './RegistryInfoDialog';
|
||||
import { Support } from './Support';
|
||||
import about from './about.md';
|
||||
import license from './license.md';
|
||||
|
||||
interface Props {
|
||||
isOpen: boolean;
|
||||
onCloseDialog: () => void;
|
||||
}
|
||||
|
||||
function a11yProps(index) {
|
||||
return {
|
||||
id: `simple-tab-${index}`,
|
||||
'aria-controls': `simple-tabpanel-${index}`,
|
||||
};
|
||||
}
|
||||
|
||||
function TabPanel(props) {
|
||||
const { children, value, index, ...other } = props;
|
||||
|
||||
return (
|
||||
<div
|
||||
aria-labelledby={`simple-tab-${index}`}
|
||||
hidden={value !== index}
|
||||
id={`simple-tabpanel-${index}`}
|
||||
role="tabpanel"
|
||||
{...other}
|
||||
>
|
||||
{value === index && <Box sx={{ paddingTop: 3 }}>{children}</Box>}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const Flags = styled('span')<{ theme?: Theme }>(() => ({
|
||||
width: '25px',
|
||||
}));
|
||||
|
||||
const HeaderInfoDialog: React.FC<Props> = ({ onCloseDialog, isOpen }) => {
|
||||
const [value, setValue] = React.useState(0);
|
||||
|
||||
const handleChange = (_event, newValue) => {
|
||||
setValue(newValue);
|
||||
};
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<RegistryInfoDialog
|
||||
onClose={onCloseDialog}
|
||||
open={isOpen}
|
||||
title={t('dialog.registry-info.title')}
|
||||
>
|
||||
<Box sx={{ width: '100%' }}>
|
||||
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
|
||||
<Tabs aria-label="basic tabs example" onChange={handleChange} value={value}>
|
||||
<Tab label={t('about')} {...a11yProps(0)} />
|
||||
<Tab label={t('dialog.license')} {...a11yProps(1)} />
|
||||
<Tab
|
||||
{...a11yProps(2)}
|
||||
icon={
|
||||
<Flags>
|
||||
<FlagsIcon.UA />
|
||||
</Flags>
|
||||
}
|
||||
/>
|
||||
</Tabs>
|
||||
</Box>
|
||||
<TabPanel index={0} value={value}>
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm]}>{about}</ReactMarkdown>
|
||||
<Contributors />
|
||||
</TabPanel>
|
||||
<TabPanel index={1} value={value}>
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm]}>{license}</ReactMarkdown>
|
||||
</TabPanel>
|
||||
<TabPanel index={2} value={value}>
|
||||
<Support />
|
||||
</TabPanel>
|
||||
</Box>
|
||||
</RegistryInfoDialog>
|
||||
);
|
||||
};
|
||||
|
||||
export default HeaderInfoDialog;
|
||||
@@ -1,3 +0,0 @@
|
||||
import { Support } from './Support';
|
||||
|
||||
export { Support };
|
||||
@@ -1,125 +0,0 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
cleanup,
|
||||
fireEvent,
|
||||
renderWithStore,
|
||||
screen,
|
||||
} from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import { DetailContext, DetailContextProps } from '../../pages/Version';
|
||||
import { store } from '../../store/store';
|
||||
import ActionBar, { Props } from './ActionBar';
|
||||
|
||||
const detailContextValue: DetailContextProps = {
|
||||
packageName: 'foo',
|
||||
readMe: 'test',
|
||||
enableLoading: () => {},
|
||||
isLoading: false,
|
||||
hasNotBeenFound: false,
|
||||
packageMeta: {
|
||||
_uplinks: {},
|
||||
latest: {
|
||||
name: 'verdaccio-ui/local-storage',
|
||||
version: '8.0.1-next.1',
|
||||
dist: {
|
||||
fileCount: 0,
|
||||
unpackedSize: 0,
|
||||
tarball: 'http://localhost:8080/bootstrap/-/bootstrap-4.3.1.tgz',
|
||||
},
|
||||
homepage: 'https://verdaccio.org',
|
||||
bugs: {
|
||||
url: 'https://github.com/verdaccio/monorepo/issues',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const ComponentToBeRendered: React.FC<{ contextValue: DetailContextProps; props?: Props }> = ({
|
||||
contextValue,
|
||||
props,
|
||||
}) => (
|
||||
<DetailContext.Provider value={contextValue}>
|
||||
<ActionBar {...props} />
|
||||
</DetailContext.Provider>
|
||||
);
|
||||
|
||||
describe('<ActionBar /> component', () => {
|
||||
afterEach(() => {
|
||||
cleanup();
|
||||
});
|
||||
|
||||
test('should render the component in default state', () => {
|
||||
const { container } = renderWithStore(
|
||||
<ComponentToBeRendered contextValue={detailContextValue} />,
|
||||
store
|
||||
);
|
||||
expect(container.firstChild).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('when there is no action bar data', () => {
|
||||
const packageMeta = {
|
||||
...detailContextValue.packageMeta,
|
||||
latest: {
|
||||
...detailContextValue.packageMeta.latest,
|
||||
homepage: undefined,
|
||||
bugs: undefined,
|
||||
dist: {
|
||||
...detailContextValue.packageMeta.latest.dist,
|
||||
tarball: undefined,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const { container } = renderWithStore(
|
||||
<ComponentToBeRendered contextValue={{ ...detailContextValue, packageMeta }} />,
|
||||
store
|
||||
);
|
||||
expect(container.firstChild).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('when there is a button to download a tarball', () => {
|
||||
renderWithStore(<ComponentToBeRendered contextValue={{ ...detailContextValue }} />, store);
|
||||
expect(screen.getByLabelText('Download tarball')).toBeTruthy();
|
||||
});
|
||||
|
||||
test('when there is a button to raw manifest', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered contextValue={{ ...detailContextValue }} props={{ showRaw: true }} />,
|
||||
store
|
||||
);
|
||||
expect(screen.getByLabelText('Raw Manifest')).toBeTruthy();
|
||||
});
|
||||
|
||||
test('when click button to raw manifest open a dialog with viewver', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered contextValue={{ ...detailContextValue }} props={{ showRaw: true }} />,
|
||||
store
|
||||
);
|
||||
fireEvent.click(screen.getByLabelText('Raw Manifest'));
|
||||
expect(screen.getByTestId('raw-viewver-dialog')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('should not display download tarball button', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered
|
||||
contextValue={{ ...detailContextValue }}
|
||||
props={{ showDownloadTarball: false }}
|
||||
/>,
|
||||
store
|
||||
);
|
||||
expect(screen.queryByLabelText('Download tarball')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('should not display show raw button', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered contextValue={{ ...detailContextValue }} props={{ showRaw: false }} />,
|
||||
store
|
||||
);
|
||||
expect(screen.queryByLabelText('Raw Manifest')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('when there is a button to open an issue', () => {
|
||||
renderWithStore(<ComponentToBeRendered contextValue={{ ...detailContextValue }} />, store);
|
||||
expect(screen.getByLabelText('Open an issue')).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -1,3 +0,0 @@
|
||||
import { default as MaterialUIAppBar } from '@mui/material/AppBar';
|
||||
|
||||
export default MaterialUIAppBar;
|
||||
@@ -0,0 +1 @@
|
||||
export { default } from './Contributors';
|
||||
@@ -1,16 +0,0 @@
|
||||
import React from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { CopyClipboard as CopyClipboardOriginal } from '@verdaccio/ui-components';
|
||||
|
||||
interface Props {
|
||||
text: string;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
function CopyToClipBoard(props: Props) {
|
||||
const { t } = useTranslation();
|
||||
return <CopyClipboardOriginal title={t('copy-to-clipboard')} dataTestId="copy-icon" {...props} />;
|
||||
}
|
||||
|
||||
export default CopyToClipBoard;
|
||||
@@ -1,3 +0,0 @@
|
||||
import { default as MaterialUIFormHelperText } from '@mui/material/FormHelperText';
|
||||
|
||||
export default MaterialUIFormHelperText;
|
||||
@@ -1,3 +0,0 @@
|
||||
import { default as MaterialUIInput } from '@mui/material/Input';
|
||||
|
||||
export default MaterialUIInput;
|
||||
@@ -1,40 +0,0 @@
|
||||
import React, { MouseEvent } from 'react';
|
||||
import { Link as RouterLink } from 'react-router-dom';
|
||||
|
||||
import Text, { TextProps } from './Text';
|
||||
|
||||
interface Props extends Pick<TextProps, 'variant'> {
|
||||
external?: boolean;
|
||||
className?: string;
|
||||
to: string;
|
||||
children?: React.ReactNode;
|
||||
onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
|
||||
}
|
||||
|
||||
type LinkRef = HTMLAnchorElement;
|
||||
|
||||
/* eslint-disable verdaccio/jsx-spread */
|
||||
const Link = React.forwardRef<LinkRef, Props>(function Link(
|
||||
{ external, to, children, variant, className, ...props },
|
||||
ref
|
||||
) {
|
||||
const LinkTextContent = <Text variant={variant}>{children}</Text>;
|
||||
return external ? (
|
||||
<a
|
||||
className={className}
|
||||
href={to}
|
||||
ref={ref}
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
{...props}
|
||||
>
|
||||
{LinkTextContent}
|
||||
</a>
|
||||
) : (
|
||||
<RouterLink className={className} innerRef={ref} to={to} {...props}>
|
||||
{LinkTextContent}
|
||||
</RouterLink>
|
||||
);
|
||||
});
|
||||
|
||||
export default Link;
|
||||
@@ -1,39 +0,0 @@
|
||||
import styled from '@emotion/styled';
|
||||
import List from '@mui/material/List';
|
||||
import { PRIMARY_COLOR } from 'verdaccio-ui/utils/colors';
|
||||
|
||||
import { default as MuiCard } from '../Card';
|
||||
import { default as Typography } from '../Heading';
|
||||
|
||||
export const Wrapper = styled('div')({
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
flex: 1,
|
||||
padding: '16px',
|
||||
});
|
||||
|
||||
export const Inner = styled('div')({
|
||||
maxWidth: '650px',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
});
|
||||
|
||||
export const EmptyPackage = styled('img')({
|
||||
width: '150px',
|
||||
margin: '0 auto',
|
||||
});
|
||||
|
||||
export const Heading = styled(Typography)({
|
||||
color: PRIMARY_COLOR,
|
||||
});
|
||||
|
||||
export const StyledList = styled(List)({
|
||||
padding: 0,
|
||||
color: PRIMARY_COLOR,
|
||||
});
|
||||
|
||||
export const Card = styled(MuiCard)({
|
||||
marginTop: '24px',
|
||||
});
|
||||
@@ -1,3 +0,0 @@
|
||||
import { default as MaterialUIPaper } from '@mui/material/Paper';
|
||||
|
||||
export default MaterialUIPaper;
|
||||
@@ -78,4 +78,4 @@ const Support = () => {
|
||||
);
|
||||
};
|
||||
|
||||
export { Support };
|
||||
export default Support;
|
||||
@@ -0,0 +1 @@
|
||||
export { default } from './Support';
|
||||
@@ -1,6 +0,0 @@
|
||||
import styled from '@emotion/styled';
|
||||
import Chip from '@mui/material/Chip';
|
||||
|
||||
export const Tag = styled(Chip)({
|
||||
margin: '5px',
|
||||
});
|
||||
@@ -1 +0,0 @@
|
||||
export { default } from './Text';
|
||||
@@ -1,3 +0,0 @@
|
||||
import { default as MaterialUIToolbar } from '@mui/material/Toolbar';
|
||||
|
||||
export default MaterialUIToolbar;
|
||||
@@ -1,13 +0,0 @@
|
||||
import { createContext } from 'react';
|
||||
import { Language } from 'src/i18n/enabledLanguages';
|
||||
|
||||
interface Props {
|
||||
isDarkMode: boolean;
|
||||
setIsDarkMode: (isDarkMode: boolean) => void;
|
||||
language: Language;
|
||||
setLanguage: (language: Language) => void;
|
||||
}
|
||||
|
||||
const ThemeContext = createContext<undefined | Props>(undefined);
|
||||
|
||||
export default ThemeContext;
|
||||
@@ -1,55 +0,0 @@
|
||||
import { StyledEngineProvider, Theme, ThemeProvider } from '@mui/material/styles';
|
||||
import i18next from 'i18next';
|
||||
import React, { useCallback, useEffect } from 'react';
|
||||
import { useConfig } from 'verdaccio-ui/providers/config';
|
||||
|
||||
import useLocalStorage from '../hooks/useLocalStorage';
|
||||
import ThemeContext from './ThemeContext';
|
||||
import loadDayJSLocale from './load-dayjs-locale';
|
||||
import { ThemeMode, getTheme } from './theme';
|
||||
|
||||
declare module '@mui/styles/defaultTheme' {
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||
interface DefaultTheme extends Theme {}
|
||||
}
|
||||
|
||||
function getDarkModeDefault(darkModeConfig) {
|
||||
const prefersDarkMode = window.matchMedia?.('(prefers-color-scheme:dark)').matches;
|
||||
if (typeof darkModeConfig === 'boolean') {
|
||||
return darkModeConfig;
|
||||
} else {
|
||||
return prefersDarkMode;
|
||||
}
|
||||
}
|
||||
|
||||
const ThemeProviderWrapper: React.FC<{ children: any }> = ({ children }) => {
|
||||
const currentLanguage = i18next.languages?.[0];
|
||||
const { configOptions } = useConfig();
|
||||
const isDarkModeDefault = getDarkModeDefault(configOptions.darkMode);
|
||||
const isSwitchThemeEnabled = configOptions.showThemeSwitch;
|
||||
const [isDarkModeStorage, setIsDarkMode] = useLocalStorage('darkMode', isDarkModeDefault);
|
||||
const [language, setLanguage] = useLocalStorage('language', currentLanguage);
|
||||
const isDarkMode = isSwitchThemeEnabled === true ? isDarkModeStorage : isDarkModeDefault;
|
||||
const themeMode: ThemeMode = isDarkMode ? 'dark' : 'light';
|
||||
|
||||
const changeLanguage = useCallback(async () => {
|
||||
await i18next.changeLanguage(language);
|
||||
}, [language]);
|
||||
|
||||
const currentTheme = getTheme(themeMode, configOptions?.primaryColor);
|
||||
|
||||
useEffect(() => {
|
||||
changeLanguage();
|
||||
loadDayJSLocale();
|
||||
}, [language, changeLanguage]);
|
||||
|
||||
return (
|
||||
<ThemeContext.Provider value={{ isDarkMode, setIsDarkMode, language, setLanguage }}>
|
||||
<StyledEngineProvider injectFirst={true}>
|
||||
<ThemeProvider theme={currentTheme}>{children}</ThemeProvider>
|
||||
</StyledEngineProvider>
|
||||
</ThemeContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export default ThemeProviderWrapper;
|
||||
@@ -1,7 +0,0 @@
|
||||
import { useTheme as muiUseTheme } from '@mui/styles';
|
||||
|
||||
import { Theme } from './theme';
|
||||
|
||||
const useTheme = () => muiUseTheme<Theme>();
|
||||
|
||||
export default useTheme;
|
||||
@@ -28,6 +28,10 @@ i18n
|
||||
fallbackLng: DEFAULT_LANGUAGE,
|
||||
whitelist: [...listLanguagesAsString],
|
||||
load: 'currentOnly',
|
||||
react: {
|
||||
wait: true,
|
||||
useSuspense: false,
|
||||
},
|
||||
resources: languages,
|
||||
debug: false,
|
||||
interpolation: {
|
||||
|
||||
@@ -2,24 +2,27 @@ import React from 'react';
|
||||
import { createRoot } from 'react-dom/client';
|
||||
import { hot } from 'react-hot-loader/root';
|
||||
import { Provider } from 'react-redux';
|
||||
import AppConfigurationContext from 'verdaccio-ui/providers/config';
|
||||
|
||||
import {
|
||||
AppConfigurationProvider,
|
||||
StyleBaseline,
|
||||
ThemeProvider,
|
||||
store,
|
||||
} from '@verdaccio/ui-components';
|
||||
|
||||
import App from './App';
|
||||
import StyleBaseline from './design-tokens/StyleBaseline';
|
||||
import ThemeProvider from './design-tokens/ThemeProvider';
|
||||
import { store } from './store';
|
||||
|
||||
const container = document.getElementById('root');
|
||||
const root = createRoot(container as HTMLElement);
|
||||
|
||||
const AppContainer = () => (
|
||||
<Provider store={store}>
|
||||
<AppConfigurationContext>
|
||||
<AppConfigurationProvider>
|
||||
<ThemeProvider>
|
||||
<StyleBaseline />
|
||||
<App />
|
||||
</ThemeProvider>
|
||||
</AppConfigurationContext>
|
||||
</AppConfigurationProvider>
|
||||
</Provider>
|
||||
);
|
||||
|
||||
|
||||
3
packages/plugins/ui-theme/src/pages/Front/Home.ts
Normal file
3
packages/plugins/ui-theme/src/pages/Front/Home.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { Home } from '@verdaccio/ui-components';
|
||||
|
||||
export default Home;
|
||||
@@ -1,32 +0,0 @@
|
||||
import React from 'react';
|
||||
import { cleanup, render, screen } from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import { DetailContextProvider } from '../../context';
|
||||
import Deprecated from './Deprecated';
|
||||
|
||||
describe('test Deprecated', () => {
|
||||
afterEach(() => {
|
||||
cleanup();
|
||||
});
|
||||
|
||||
const packageMeta = {
|
||||
latest: {
|
||||
packageName: 'foo',
|
||||
version: '1.0.0',
|
||||
deprecated: 'duuuude, this is deprecated',
|
||||
maintainers: [],
|
||||
contributors: [],
|
||||
},
|
||||
};
|
||||
|
||||
test('should render the deprecated message', () => {
|
||||
render(
|
||||
// @ts-ignore
|
||||
<DetailContextProvider value={{ packageMeta }}>
|
||||
<Deprecated message={packageMeta.latest.deprecated} />
|
||||
</DetailContextProvider>
|
||||
);
|
||||
|
||||
expect(screen.getByText('duuuude, this is deprecated')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -1,40 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import loadable from '../../../App/utils/loadable';
|
||||
import DetailContainerContentReadme from './DetailContainerContentReadme';
|
||||
|
||||
export enum TabPosition {
|
||||
README = 'readme',
|
||||
DEPENDENCIES = 'dependencies',
|
||||
VERSIONS = 'versions',
|
||||
UPLINKS = 'uplinks',
|
||||
}
|
||||
|
||||
const Versions = loadable(() => import(/* webpackChunkName: "Versions" */ './Versions'));
|
||||
const UpLinks = loadable(() => import(/* webpackChunkName: "UpLinks" */ './UpLinks'));
|
||||
|
||||
const Dependencies = loadable(
|
||||
() => import(/* webpackChunkName: "Dependencies" */ './Dependencies')
|
||||
);
|
||||
|
||||
interface Props {
|
||||
tabPosition: TabPosition;
|
||||
readDescription?: string;
|
||||
}
|
||||
|
||||
const DetailContainerContent: React.FC<Props> = ({ tabPosition, readDescription }) => {
|
||||
switch (tabPosition) {
|
||||
case TabPosition.README:
|
||||
return <DetailContainerContentReadme description={readDescription} />;
|
||||
case TabPosition.UPLINKS:
|
||||
return <UpLinks />;
|
||||
case TabPosition.VERSIONS:
|
||||
return <Versions />;
|
||||
case TabPosition.DEPENDENCIES:
|
||||
return <Dependencies />;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
export default DetailContainerContent;
|
||||
@@ -1,58 +0,0 @@
|
||||
import React from 'react';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { cleanup, render } from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import translationEN from '../../../../i18n/crowdin/ui.json';
|
||||
import { DetailContext } from '../../context';
|
||||
import { DetailContextProps } from '../../version-config';
|
||||
import Versions from './Versions';
|
||||
import data from './__partials__/data.json';
|
||||
|
||||
const detailContextValue: Partial<DetailContextProps> = {
|
||||
packageName: 'foo',
|
||||
packageMeta: data,
|
||||
};
|
||||
|
||||
const ComponentToBeRendered: React.FC<{ contextValue: Partial<DetailContextProps> }> = ({
|
||||
contextValue,
|
||||
}) => (
|
||||
<MemoryRouter>
|
||||
<DetailContext.Provider value={contextValue}>
|
||||
<Versions />
|
||||
</DetailContext.Provider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
|
||||
describe('<Version /> component', () => {
|
||||
afterEach(() => {
|
||||
cleanup();
|
||||
});
|
||||
|
||||
// FIXME: this test is not deterministic (writes `N days ago` in the snapshot, where N is random number)
|
||||
test.skip('should render the component in default state', () => {
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={detailContextValue} />);
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('should render versions', () => {
|
||||
const { getByText } = render(<ComponentToBeRendered contextValue={detailContextValue} />);
|
||||
|
||||
expect(getByText(translationEN.versions['version-history'])).toBeTruthy();
|
||||
expect(getByText(translationEN.versions['current-tags'])).toBeTruthy();
|
||||
|
||||
// pick some versions
|
||||
expect(getByText('2.3.0')).toBeTruthy();
|
||||
expect(getByText('canary')).toBeTruthy();
|
||||
});
|
||||
|
||||
test('should not render versions', () => {
|
||||
const { queryByText } = render(
|
||||
<ComponentToBeRendered contextValue={{ packageName: detailContextValue.packageName }} />
|
||||
);
|
||||
|
||||
expect(queryByText(translationEN.versions['version-history'])).toBeFalsy();
|
||||
expect(queryByText(translationEN.versions['current-tags'])).toBeFalsy();
|
||||
});
|
||||
|
||||
test.todo('should click on version link');
|
||||
});
|
||||
@@ -1,39 +0,0 @@
|
||||
import React, { useContext } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { DetailContext } from '../../context';
|
||||
import VersionsHistoryList from './VersionsHistoryList';
|
||||
import VersionsTagList from './VersionsTagList';
|
||||
import { StyledText } from './styles';
|
||||
|
||||
const Versions: React.FC = () => {
|
||||
const detailContext = useContext(DetailContext);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { packageMeta, packageName } = detailContext;
|
||||
|
||||
if (!packageMeta) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { versions = {}, time = {}, ['dist-tags']: distTags = {} } = packageMeta;
|
||||
|
||||
return (
|
||||
<>
|
||||
{distTags && Object.keys(distTags).length > 0 && packageName && (
|
||||
<>
|
||||
<StyledText variant="subtitle1">{t('versions.current-tags')}</StyledText>
|
||||
<VersionsTagList packageName={packageName} tags={distTags} time={time} />
|
||||
</>
|
||||
)}
|
||||
{versions && Object.keys(versions).length > 0 && packageName && (
|
||||
<>
|
||||
<StyledText variant="subtitle1">{t('versions.version-history')}</StyledText>
|
||||
<VersionsHistoryList packageName={packageName} time={time} versions={versions} />
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Versions;
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
export { default } from './DetailContainer';
|
||||
@@ -1,98 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
import React from 'react';
|
||||
import { renderWithStore, screen, waitFor } from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import { store } from '../../../store';
|
||||
import { DetailContext } from '../context';
|
||||
import { DetailContextProps } from '../version-config';
|
||||
import DetailSidebar from './DetailSidebar';
|
||||
|
||||
const ComponentToBeRendered: React.FC<{ contextValue: DetailContextProps }> = ({
|
||||
contextValue,
|
||||
}) => (
|
||||
<DetailContext.Provider value={contextValue}>
|
||||
<DetailSidebar />
|
||||
</DetailContext.Provider>
|
||||
);
|
||||
|
||||
// https://stackoverflow.com/a/54010619/308341
|
||||
jest.mock('react', () => {
|
||||
const React = jest.requireActual('react');
|
||||
React.Suspense = ({ children }) => children;
|
||||
return React;
|
||||
});
|
||||
|
||||
const detailContextValue: DetailContextProps = {
|
||||
packageName: 'foo',
|
||||
readMe: 'test',
|
||||
enableLoading: () => {},
|
||||
isLoading: false,
|
||||
hasNotBeenFound: false,
|
||||
packageMeta: {
|
||||
_uplinks: {},
|
||||
latest: {
|
||||
name: 'verdaccio-ui/local-storage',
|
||||
version: '8.0.1-next.1',
|
||||
dist: {
|
||||
fileCount: 0,
|
||||
unpackedSize: 0,
|
||||
tarball: 'http://localhost:8080/bootstrap/-/bootstrap-4.3.1.tgz',
|
||||
},
|
||||
homepage: 'https://verdaccio.org',
|
||||
bugs: {
|
||||
url: 'https://github.com/verdaccio/monorepo/issues',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
describe('DetailSidebar', () => {
|
||||
test('should render commonjs module icon', async () => {
|
||||
const { getByAltText } = renderWithStore(
|
||||
<ComponentToBeRendered
|
||||
contextValue={_.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
type: 'commonjs',
|
||||
},
|
||||
},
|
||||
})}
|
||||
/>,
|
||||
store
|
||||
);
|
||||
|
||||
await waitFor(() => expect(getByAltText('commonjs')).toBeInTheDocument());
|
||||
});
|
||||
|
||||
test('should render ts module icon', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered
|
||||
contextValue={_.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
types: './src/index.d.ts',
|
||||
},
|
||||
},
|
||||
})}
|
||||
/>,
|
||||
store
|
||||
);
|
||||
expect(screen.getByAltText('typescript')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('should render es6 module icon', () => {
|
||||
renderWithStore(
|
||||
<ComponentToBeRendered
|
||||
contextValue={_.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
type: 'module',
|
||||
},
|
||||
},
|
||||
})}
|
||||
/>,
|
||||
store
|
||||
);
|
||||
expect(screen.getByAltText('es6 modules')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -1,73 +0,0 @@
|
||||
import styled from '@emotion/styled';
|
||||
import React, { useContext } from 'react';
|
||||
import { PackageMetaInterface } from 'types/packageMeta';
|
||||
import ActionBar from 'verdaccio-ui/components/ActionBar';
|
||||
import Author from 'verdaccio-ui/components/Author';
|
||||
import Paper from 'verdaccio-ui/components/Paper';
|
||||
import { Theme } from 'verdaccio-ui/design-tokens/theme';
|
||||
import { useConfig } from 'verdaccio-ui/providers/config';
|
||||
|
||||
import { DetailContext } from '..';
|
||||
import loadable from '../../../App/utils/loadable';
|
||||
import DetailSidebarFundButton from './DetailSidebarFundButton';
|
||||
import DetailSidebarTitle from './DetailSidebarTitle';
|
||||
import Developers from './Developers';
|
||||
import { DeveloperType } from './Developers/DevelopersTitle';
|
||||
|
||||
const Engines = loadable(() => import(/* webpackChunkName: "Engines" */ './Engines'));
|
||||
const Dist = loadable(() => import(/* webpackChunkName: "Dist" */ './Dist'));
|
||||
const Install = loadable(() => import(/* webpackChunkName: "Install" */ './Install'));
|
||||
const Repository = loadable(() => import(/* webpackChunkName: "Repository" */ './Repository'));
|
||||
|
||||
const getModuleType = (manifest: PackageMetaInterface) => {
|
||||
if (manifest.latest.main) {
|
||||
return 'commonjs';
|
||||
} else if (manifest.latest.type) {
|
||||
return manifest.latest.type;
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
const DetailSidebar: React.FC = () => {
|
||||
const detailContext = useContext(DetailContext);
|
||||
const { packageMeta, packageName, packageVersion } = detailContext;
|
||||
const { configOptions } = useConfig();
|
||||
const version = packageVersion || packageMeta?.latest.version || '';
|
||||
const time = packageMeta?.time ? packageMeta.time[version] : '';
|
||||
|
||||
if (!packageMeta || !packageName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<StyledPaper className={'sidebar-info'}>
|
||||
<DetailSidebarTitle
|
||||
description={packageMeta.latest?.description}
|
||||
hasTypes={typeof packageMeta.latest.types === 'string'}
|
||||
isLatest={typeof packageVersion === 'undefined'}
|
||||
moduleType={getModuleType(packageMeta)}
|
||||
packageName={packageName}
|
||||
time={time}
|
||||
version={version}
|
||||
/>
|
||||
<ActionBar
|
||||
showDownloadTarball={configOptions.showDownloadTarball}
|
||||
showRaw={configOptions.showRaw}
|
||||
/>
|
||||
<Install />
|
||||
<DetailSidebarFundButton />
|
||||
<Repository />
|
||||
<Engines />
|
||||
<Dist />
|
||||
<Author />
|
||||
<Developers type={DeveloperType.MAINTAINERS} />
|
||||
<Developers type={DeveloperType.CONTRIBUTORS} />
|
||||
</StyledPaper>
|
||||
);
|
||||
};
|
||||
|
||||
export default DetailSidebar;
|
||||
|
||||
const StyledPaper = styled(Paper)<{ theme?: Theme }>(({ theme }) => ({
|
||||
padding: theme?.spacing(3, 2),
|
||||
}));
|
||||
@@ -1,109 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
import React from 'react';
|
||||
import { render } from 'verdaccio-ui/utils/test-react-testing-library';
|
||||
|
||||
import { DetailContext } from '../context';
|
||||
import { DetailContextProps } from '../version-config';
|
||||
import DetailSidebarFundButton from './DetailSidebarFundButton';
|
||||
|
||||
const ComponentToBeRendered: React.FC<{ contextValue: DetailContextProps }> = ({
|
||||
contextValue,
|
||||
}) => (
|
||||
<DetailContext.Provider value={contextValue}>
|
||||
<DetailSidebarFundButton />
|
||||
</DetailContext.Provider>
|
||||
);
|
||||
|
||||
const detailContextValue: DetailContextProps = {
|
||||
packageName: 'foo',
|
||||
readMe: 'test',
|
||||
enableLoading: () => {},
|
||||
isLoading: false,
|
||||
hasNotBeenFound: false,
|
||||
packageMeta: {
|
||||
_uplinks: {},
|
||||
latest: {
|
||||
name: 'verdaccio-ui/local-storage',
|
||||
version: '8.0.1-next.1',
|
||||
dist: {
|
||||
fileCount: 0,
|
||||
unpackedSize: 0,
|
||||
tarball: 'http://localhost:8080/bootstrap/-/bootstrap-4.3.1.tgz',
|
||||
},
|
||||
homepage: 'https://verdaccio.org',
|
||||
bugs: {
|
||||
url: 'https://github.com/verdaccio/monorepo/issues',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
describe('test DetailSidebarFundButton', () => {
|
||||
test('should not display the button if fund is missing', () => {
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={detailContextValue} />);
|
||||
|
||||
expect(wrapper.queryByText('Fund')).toBeNull();
|
||||
});
|
||||
|
||||
test('should not display the button if url is missing', () => {
|
||||
const value = _.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
funding: {},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={value} />);
|
||||
|
||||
expect(wrapper.queryByText('Fund')).toBeNull();
|
||||
});
|
||||
|
||||
test('should not display the button if url is not a string', () => {
|
||||
const value = _.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
funding: {
|
||||
url: null,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={value} />);
|
||||
|
||||
expect(wrapper.queryByText('Fund')).toBeNull();
|
||||
});
|
||||
|
||||
test('should not display the button if url is not an url', () => {
|
||||
const value = _.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
funding: {
|
||||
url: 'somethign different as url',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={value} />);
|
||||
|
||||
expect(wrapper.queryByText('Fund')).toBeNull();
|
||||
});
|
||||
|
||||
test('should display the button if url is a valid url', () => {
|
||||
const value = _.merge(detailContextValue, {
|
||||
packageMeta: {
|
||||
latest: {
|
||||
funding: {
|
||||
url: 'https://opencollective.com/verdaccio',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const wrapper = render(<ComponentToBeRendered contextValue={value} />);
|
||||
|
||||
expect(wrapper.getByText('Fund')).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -1 +0,0 @@
|
||||
export { default } from './Developers';
|
||||
@@ -1,58 +0,0 @@
|
||||
import Avatar from '@mui/material/Avatar';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import List from '@mui/material/List';
|
||||
import ListItemText from '@mui/material/ListItemText';
|
||||
import React, { useContext } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { DetailContext } from '../../context';
|
||||
import npm from '../Install/img/npm.svg';
|
||||
import node from './img/node.png';
|
||||
import { EngineListItem, StyledText } from './styles';
|
||||
|
||||
const Engine: React.FC = () => {
|
||||
const { packageMeta } = useContext(DetailContext);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const engines = packageMeta?.latest?.engines;
|
||||
|
||||
if (!engines || (!engines.node && !engines.npm)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Grid container={true}>
|
||||
{engines.node && (
|
||||
<Grid item={true} xs={6}>
|
||||
<List
|
||||
subheader={
|
||||
<StyledText variant={'subtitle1'}>{t('sidebar.engines.node-js')}</StyledText>
|
||||
}
|
||||
>
|
||||
<EngineListItem button={true}>
|
||||
<Avatar src={node} />
|
||||
<ListItemText primary={engines.node} />
|
||||
</EngineListItem>
|
||||
</List>
|
||||
</Grid>
|
||||
)}
|
||||
|
||||
{engines.npm && (
|
||||
<Grid item={true} xs={6}>
|
||||
<List
|
||||
subheader={
|
||||
<StyledText variant={'subtitle1'}>{t('sidebar.engines.npm-version')}</StyledText>
|
||||
}
|
||||
>
|
||||
<EngineListItem button={true}>
|
||||
<Avatar src={npm} />
|
||||
<ListItemText primary={engines.npm} />
|
||||
</EngineListItem>
|
||||
</List>
|
||||
</Grid>
|
||||
)}
|
||||
</Grid>
|
||||
);
|
||||
};
|
||||
|
||||
export default Engine;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user