Merge branch 'develop' into feature/unit-conversion
This commit is contained in:
commit
9241638686
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@ -14,3 +14,8 @@ updates:
|
||||
directory: "/vue/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
|
136
.github/workflows/build-docker.yml
vendored
Normal file
136
.github/workflows/build-docker.yml
vendored
Normal file
@ -0,0 +1,136 @@
|
||||
name: Build Docker Container
|
||||
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
build-container:
|
||||
name: Build ${{ matrix.name }} Container
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
continue-on-error: ${{ matrix.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
# Standard build config
|
||||
- name: Standard
|
||||
dockerfile: Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
suffix: ""
|
||||
continue-on-error: false
|
||||
# Raspi build config
|
||||
- name: Raspi
|
||||
dockerfile: Dockerfile-raspi
|
||||
platforms: linux/arm/v7
|
||||
suffix: "-raspi"
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" = refs/tags/* ]]; then
|
||||
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
||||
elif [[ "$GITHUB_REF" = refs/heads/beta ]]; then
|
||||
echo VERSION=beta >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo VERSION=develop >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.2
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14'
|
||||
cache: yarn
|
||||
cache-dependency-path: vue/yarn.lock
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install --frozen-lockfile
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
- name: Set up Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ github.token }}
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: |
|
||||
vabene1111/recipes
|
||||
ghcr.io/TandoorRecipes/recipes
|
||||
flavor: |
|
||||
latest=false
|
||||
suffix=${{ matrix.suffix }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
type=ref,event=branch
|
||||
- name: Build and Push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ${{ matrix.dockerfile }}
|
||||
pull: true
|
||||
push: true
|
||||
platforms: ${{ matrix.platforms }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
notify-stable:
|
||||
name: Notify Stable
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-container
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
# Send stable discord notification
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: '🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}'
|
||||
|
||||
notify-beta:
|
||||
name: Notify Beta
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-container
|
||||
if: github.ref == 'refs/heads/beta'
|
||||
steps:
|
||||
# Send beta discord notification
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: '🚀 The BETA Image has been updated! 🥳'
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
||||
python-version: ['3.10']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.10
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
|
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
@ -25,7 +25,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
uses: github/codeql-action/init@v2
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
with:
|
||||
languages: python, javascript
|
||||
@ -47,6 +47,6 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
languages: javascript, python
|
||||
|
48
.github/workflows/docker-publish-beta-raspi.yml
vendored
48
.github/workflows/docker-publish-beta-raspi.yml
vendored
@ -1,48 +0,0 @@
|
||||
name: publish beta raspi image docker
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'beta'
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = 'beta'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
tag: beta-raspi
|
||||
dockerFile: Dockerfile-raspi
|
||||
platform: linux/arm/v7
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
||||
# Send discord notification
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: '🚀 The BETA Image has been updated! 🥳'
|
47
.github/workflows/docker-publish-beta.yml
vendored
47
.github/workflows/docker-publish-beta.yml
vendored
@ -1,47 +0,0 @@
|
||||
name: publish beta image docker
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'beta'
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = 'beta'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
tag: beta
|
||||
platform: linux/amd64,linux/arm64
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
||||
# Send discord notification
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: '🚀 The BETA Image has been updated! 🥳'
|
42
.github/workflows/docker-publish-dev.yml
vendored
42
.github/workflows/docker-publish-dev.yml
vendored
@ -1,42 +0,0 @@
|
||||
name: publish dev image docker
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
- '*/*'
|
||||
- '!master'
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = 'develop'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Clear Cache
|
||||
working-directory: ./vue
|
||||
run: yarn cache clean --all
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Publish to Registry
|
||||
uses: elgohr/Publish-Docker-Github-Action@2.13
|
||||
with:
|
||||
name: vabene1111/recipes
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
@ -1,45 +0,0 @@
|
||||
name: publish latest raspi image docker
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}-raspi
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}-raspi'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
dockerFile: Dockerfile-raspi
|
||||
platform: linux/arm/v7
|
||||
tag: latest-raspi
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
44
.github/workflows/docker-publish-latest.yml
vendored
44
.github/workflows/docker-publish-latest.yml
vendored
@ -1,44 +0,0 @@
|
||||
name: publish latest image docker
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
platform: linux/amd64,linux/arm64
|
||||
tag: latest
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
@ -1,47 +0,0 @@
|
||||
name: publish tagged raspi release docker
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
name: Build image job
|
||||
steps:
|
||||
- name: Checkout master
|
||||
uses: actions/checkout@master
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
dockerFile: Dockerfile-raspi
|
||||
platform: linux/arm/v7
|
||||
tag: ${{ steps.get_version.outputs.VERSION }}-raspi
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
53
.github/workflows/docker-publish-release.yml
vendored
53
.github/workflows/docker-publish-release.yml
vendored
@ -1,53 +0,0 @@
|
||||
name: publish tagged release docker
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
name: Build image job
|
||||
steps:
|
||||
- name: Checkout master
|
||||
uses: actions/checkout@master
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
|
||||
# Update Version number
|
||||
- name: Update version file
|
||||
uses: DamianReeves/write-file-action@v1.0
|
||||
with:
|
||||
path: recipes/version.py
|
||||
contents: |
|
||||
VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}'
|
||||
BUILD_REF = '${{ github.sha }}'
|
||||
write-mode: overwrite
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
# Build container
|
||||
- name: Build and publish image
|
||||
uses: ilteoood/docker_buildx@master
|
||||
with:
|
||||
publish: true
|
||||
imageName: vabene1111/recipes
|
||||
platform: linux/amd64,linux/arm64
|
||||
tag: ${{ steps.get_version.outputs.VERSION }}
|
||||
dockerUser: ${{ secrets.DOCKER_USERNAME }}
|
||||
dockerPassword: ${{ secrets.DOCKER_PASSWORD }}
|
||||
# Send discord notification
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: '🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}'
|
4
.github/workflows/docs.yml
vendored
4
.github/workflows/docs.yml
vendored
@ -9,8 +9,8 @@ jobs:
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
- run: pip install mkdocs-material mkdocs-include-markdown-plugin
|
||||
|
@ -247,10 +247,27 @@ def parse_description(description):
|
||||
|
||||
|
||||
def clean_instruction_string(instruction):
|
||||
normalized_string = normalize_string(instruction)
|
||||
# handle HTML tags that can be converted to markup
|
||||
normalized_string = instruction \
|
||||
.replace("<nobr>", "**") \
|
||||
.replace("</nobr>", "**") \
|
||||
.replace("<strong>", "**") \
|
||||
.replace("</strong>", "**")
|
||||
normalized_string = normalize_string(normalized_string)
|
||||
normalized_string = normalized_string.replace('\n', ' \n')
|
||||
normalized_string = normalized_string.replace(' \n \n', '\n\n')
|
||||
return normalized_string
|
||||
|
||||
# handle unsupported, special UTF8 character in Thermomix-specific instructions,
|
||||
# that happen in nearly every recipe on Cookidoo, Zaubertopf Club, Rezeptwelt
|
||||
# and in Thermomix-specific recipes on many other sites
|
||||
return normalized_string \
|
||||
.replace("", _('reverse rotation')) \
|
||||
.replace("", _('careful rotation')) \
|
||||
.replace("", _('knead')) \
|
||||
.replace("Andicken ", _('thicken')) \
|
||||
.replace("Erwärmen ", _('warm up')) \
|
||||
.replace("Fermentieren ", _('ferment')) \
|
||||
.replace("Sous-vide ", _("sous-vide"))
|
||||
|
||||
|
||||
def parse_instructions(instructions):
|
||||
|
@ -528,6 +528,35 @@ msgstr "Du hast mehr Benutzer in Deinem Space als erlaubt."
|
||||
msgid "One of queryset or hash_key must be provided"
|
||||
msgstr "Es muss die Abfrage oder der Hash_Key angeben werden"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:265
|
||||
msgid "reverse rotation"
|
||||
msgstr "Linkslauf"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:266
|
||||
msgid "careful rotation"
|
||||
msgstr "Kochlöffel"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:267
|
||||
msgid "knead"
|
||||
msgstr "Kneten"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:268
|
||||
msgid "thicken"
|
||||
msgstr "Andicken"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:269
|
||||
msgid "warm up"
|
||||
msgstr "Erwärmen"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:270
|
||||
msgid "ferment"
|
||||
msgstr "Fermentieren"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:271
|
||||
msgid "sous-vide"
|
||||
msgstr "Sous-vide"
|
||||
|
||||
|
||||
#: .\cookbook\helper\shopping_helper.py:152
|
||||
msgid "You must supply a servings size"
|
||||
msgstr "Sie müssen eine Portionsgröße angeben"
|
||||
|
16
docs/faq.md
16
docs/faq.md
@ -1,5 +1,5 @@
|
||||
There are several questions and issues that come up from time to time. Here are some answers.
|
||||
Please note that the existence of some questions is due the application not being perfect in some parts.
|
||||
There are several questions and issues that come up from time to time, here are some answers:
|
||||
please note that the existence of some questions is due the application not being perfect in some parts.
|
||||
Many of those shortcomings are planned to be fixed in future release but simply could not be addressed yet due to time limits.
|
||||
|
||||
## Is there a Tandoor app?
|
||||
@ -22,14 +22,14 @@ Open Tandoor, open the menu behind the three vertical dots at the top right, sel
|
||||
Open Tandoor, open the menu behind the three horizontal dots at the top right, select `Apps > Install Tandoor Recipes`
|
||||
|
||||
## Why is Tandoor not working correctly?
|
||||
If you just set up your Tandoor instance and you're having issues like...
|
||||
If you just set up your Tandoor instance and you're having issues like;
|
||||
|
||||
- Links not working
|
||||
- CSRF errors
|
||||
- CORS errors
|
||||
- No recipes are loading
|
||||
|
||||
... then make sure, that you have set [all required headers](install/docker.md#required-headers) in your reverse proxy correctly.
|
||||
then make sure you have set [all required headers](install/docker.md#required-headers) in your reverse proxy correctly.
|
||||
If that doesn't fix it, you can also refer to the appropriate sub section in the [reverse proxy documentation](install/docker.md#reverse-proxy) and verify your general webserver configuration.
|
||||
|
||||
## Why am I getting CSRF Errors?
|
||||
@ -62,7 +62,7 @@ The markdown renderer follows this markdown specification https://daringfireball
|
||||
Please refer to [here](install/docker.md#setup-issues-on-raspberry-pi).
|
||||
|
||||
## How can I create users?
|
||||
To create a new user click on your name (top right corner) and select 'space settings'. There under invites click create.
|
||||
To create a new user click on your name (top right corner) and select 'space settings'. Click create listed below invites.
|
||||
|
||||
It is not possible to create users through the admin because users must be assigned a default group and space.
|
||||
|
||||
@ -72,8 +72,8 @@ If you use an external auth provider or proxy authentication make sure to specif
|
||||
environment configuration.
|
||||
|
||||
## What are spaces?
|
||||
Spaces are a feature used to separate one installation of Tandoor into several parts.
|
||||
In technical terms it is a multi tenant system.
|
||||
Spaces are is a type of feature used to separate one installation of Tandoor into several parts.
|
||||
In technical terms it is a multi-tenant system.
|
||||
|
||||
You can compare a space to something like google drive or dropbox.
|
||||
There is only one installation of the Dropbox system, but it handles multiple users without them noticing each other.
|
||||
@ -83,7 +83,7 @@ If you want to host the collection of your friends, family, or neighbor you can
|
||||
Sharing between spaces is currently not possible but is planned for future releases.
|
||||
|
||||
## How can I reset passwords?
|
||||
To reset a lost password if access to the container is lost you need to
|
||||
To reset a lost password if access to the container is lost you need to:
|
||||
|
||||
1. execute into the container using `docker-compose exec web_recipes sh`
|
||||
2. activate the virtual environment `source venv/bin/activate`
|
||||
|
@ -49,7 +49,7 @@ spec:
|
||||
secretKeyRef:
|
||||
name: recipes
|
||||
key: postgresql-postgres-password
|
||||
image: vabene1111/recipes:1.0.1
|
||||
image: vabene1111/recipes
|
||||
imagePullPolicy: Always
|
||||
resources:
|
||||
requests:
|
||||
@ -110,7 +110,7 @@ spec:
|
||||
subPath: nginx-config
|
||||
readOnly: true
|
||||
- name: recipes
|
||||
image: vabene1111/recipes:1.0.1
|
||||
image: vabene1111/recipes
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /opt/recipes/venv/bin/gunicorn
|
||||
@ -159,6 +159,8 @@ spec:
|
||||
secretKeyRef:
|
||||
name: recipes
|
||||
key: secret-key
|
||||
- name: GUNICORN_MEDIA
|
||||
value: "0"
|
||||
- name: DB_ENGINE
|
||||
value: django.db.backends.postgresql_psycopg2
|
||||
- name: POSTGRES_HOST
|
||||
|
@ -61,6 +61,14 @@ The deployment first fires up a init container to do the database migrations and
|
||||
|
||||
The deployment then runs two containers, the recipes-nginx and the recipes container which runs the gunicorn app. The nginx container gets it's nginx.conf via config map to deliver static content `/static` and `/media`. The guincorn container gets it's secret key and the database password from the secret `recipes`. `gunicorn` runs as user `nobody`.
|
||||
|
||||
Currently, this deployment is using the `latest` image. You may want to explicitly set the tag, e.g.
|
||||
|
||||
~~~
|
||||
image: vabene1111/recipes:1.4.7
|
||||
~~~
|
||||
|
||||
It is **extremely important** to use the same image in both the initialization `init-chmod-data` and the main `recipes` containers.
|
||||
|
||||
### 60-service.yaml
|
||||
|
||||
Creating the app service.
|
||||
@ -91,7 +99,9 @@ I don't know how this check works, but this warning is simply wrong! ;-) Media a
|
||||
|
||||
## Updates
|
||||
|
||||
These manifests are tested against Release 1.0.1. Newer versions may not work without changes.
|
||||
These manifests have been tested for several releases. Newer versions may not work without changes.
|
||||
|
||||
If everything works as expected, the `init-chmod-data` initialization container performs the database migration and the update procedure is transparent. However, it is recommended to use specific tags to increase stability and avoid unnecessary migrations.
|
||||
|
||||
## Apply the manifets
|
||||
|
||||
|
50
docs/install/wsl.md
Normal file
50
docs/install/wsl.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Ubuntu Installation on Windows (WSL) and Docker Desktop
|
||||
|
||||
Install Docker from https://docs.docker.com/desktop/install/windows-install/
|
||||
Be sure to select the Use WSL 2 instead of Hyper-V option on the configuration page when prompted
|
||||
|
||||
Follow the instructions to install Tandoor on Docker. Tandoor installation instructions using Docker is gotten from https://docs.tandoor.dev/install/docker/
|
||||
|
||||
You may get the error below if you are using Docker Desktop:
|
||||
/usr/bin/docker-credential-desktop.exe: Invalid argument
|
||||
|
||||
This indicates that Docker Compose is not able to pull authentication credentials that are needed to pull recipe files.
|
||||
|
||||
Run the command:
|
||||
export DOCKER_CONFIG=/non-existent-directory
|
||||
|
||||
"non-existent-directory" could be an arbitrary directory of your choosing. It could be empty,
|
||||
we are just giving docker a file to point to. You can create a credentials file at a later date to add security to your application.
|
||||
|
||||
After you run the command docker-compose up -d, you may encounter an error similar to the one below:
|
||||
fixing permissions on existing directory /var/lib/postgresql/data ... 2023-03-01T15:38:27.140501700Z chmod: /var/lib/postgresql/data: Operation not permitted
|
||||
|
||||
This indicates that the postgresql user 'postgres' does not have the necessary permissions to
|
||||
change the permissions of the /var/lib/postgresql/data directory.
|
||||
Note: This issue does not occuer in the Powershell terminal, so it might be easier to install Tandoor in powershell and continue development using WSL.
|
||||
Steps to fix this error:
|
||||
Since the permissions have to be changed within the docker container, we will need to create a file that runs as soon as the container starts up. This container will change the permissions of the /var/lib/postgresql/data directory before the db_recipes-1 container is started up. This container sets up the database to accept connections.
|
||||
Docker allows us to set up an entrypoint in the docker-compose.yml file. This is where we will set the commands to change the permissions of the postgres user.
|
||||
Steps to set up entry-point file:
|
||||
1. Create a new file ‘docker-entrypoint.sh’ in the same directory as your docker-compose.yml file. This will be a bash file.
|
||||
2. Add the following commands to the file
|
||||
a. #!/bin/sh (This is called a shebang. It tells the OS the shell to use which is the sh shell in this case)
|
||||
b. chmod 777 /var/lib/postgresql/data (Gives read, write and execute permissions on the directory to all users, you may change these permissions as you wish)
|
||||
c. exec “@” (Runs the script with the commands above)
|
||||
|
||||
Your folder structure should look like this with docker-compose.yml and docker-entrypoint.sh in the same directory:
|
||||

|
||||
|
||||
|
||||
The docker-entrypoint.sh file should look like this:
|
||||

|
||||
|
||||
3. Open the docker-compose.yml file
|
||||
4. Add an entrypoint configuration to the db_recipes service
|
||||
entrypoint:
|
||||
- docker-entrypoint.sh
|
||||
This command makes sure that the docker-entrypoint.sh file is run first before the db_recipes services is started. Using this, we set the database user permission before they are needed, so it gets rid of the error.
|
||||
Your docker-compose.yml file should look like this:
|
||||

|
||||
|
||||
5. Run docker-compose up -d, all the containers should run!
|
@ -33,6 +33,7 @@ nav:
|
||||
- Synology: install/synology.md
|
||||
- Kubernetes: install/kubernetes.md
|
||||
- KubeSail or PiBox: install/kubesail.md
|
||||
- WSL: install/wsl.md
|
||||
- Manual: install/manual.md
|
||||
- Other setups: install/other.md
|
||||
- Features:
|
||||
|
@ -388,6 +388,7 @@ LANGUAGES = [
|
||||
('en', _('English')),
|
||||
('fr', _('French')),
|
||||
('de', _('German')),
|
||||
('hu', _('Hungarian')),
|
||||
('it', _('Italian')),
|
||||
('lv', _('Latvian')),
|
||||
('pl', _('Polish')),
|
||||
|
@ -2,9 +2,9 @@ Django==4.1.7
|
||||
cryptography==39.0.1
|
||||
django-annoying==0.10.6
|
||||
django-autocomplete-light==3.9.4
|
||||
django-cleanup==6.0.0
|
||||
django-cleanup==7.0.0
|
||||
django-crispy-forms==1.14.0
|
||||
django-tables2==2.4.1
|
||||
django-tables2==2.5.3
|
||||
djangorestframework==3.14.0
|
||||
drf-writable-nested==0.7.0
|
||||
django-oauth-toolkit==2.2.0
|
||||
@ -17,7 +17,7 @@ Markdown==3.4.1
|
||||
Pillow==9.4.0
|
||||
psycopg2-binary==2.9.5
|
||||
python-dotenv==0.21.0
|
||||
requests==2.28.1
|
||||
requests==2.28.2
|
||||
six==1.16.0
|
||||
webdavclient3==3.14.6
|
||||
whitenoise==6.2.0
|
||||
@ -27,12 +27,12 @@ uritemplate==4.1.1
|
||||
beautifulsoup4==4.11.1
|
||||
microdata==0.8.0
|
||||
Jinja2==3.1.2
|
||||
django-webpack-loader==1.8.0
|
||||
django-webpack-loader==1.8.1
|
||||
git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82
|
||||
django-allauth==0.52.0
|
||||
recipe-scrapers==14.30.0
|
||||
django-scopes==1.2.0.post1
|
||||
pytest==7.2.0
|
||||
pytest==7.2.2
|
||||
pytest-django==4.5.2
|
||||
django-treebeard==4.5.1
|
||||
django-cors-headers==3.13.0
|
||||
|
@ -8,7 +8,7 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/eslint-parser": "^7.19.1",
|
||||
"@babel/eslint-parser": "^7.21.3",
|
||||
"@emoji-mart/data": "^1.1.1",
|
||||
"@popperjs/core": "^2.11.6",
|
||||
"@riophae/vue-treeselect": "^0.4.0",
|
||||
@ -19,7 +19,7 @@
|
||||
"babel-core": "^6.26.3",
|
||||
"babel-loader": "^9.1.0",
|
||||
"bootstrap-vue": "^2.23.1",
|
||||
"core-js": "^3.27.1",
|
||||
"core-js": "^3.29.1",
|
||||
"emoji-mart": "^5.4.0",
|
||||
"emoji-mart-vue-fast": "^12.0.1",
|
||||
"html2pdf.js": "^0.10.1",
|
||||
@ -41,7 +41,7 @@
|
||||
"vue-property-decorator": "^9.1.2",
|
||||
"vue-sanitize": "^0.2.2",
|
||||
"vue-simple-calendar": "TandoorRecipes/vue-simple-calendar#lastvue2",
|
||||
"vue-template-compiler": "2.6.14",
|
||||
"vue-template-compiler": "2.7.14",
|
||||
"vue2-touch-events": "^3.2.2",
|
||||
"vuedraggable": "^2.24.3",
|
||||
"workbox-webpack-plugin": "^6.5.4",
|
||||
@ -49,8 +49,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kazupon/vue-i18n-loader": "^0.5.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
||||
"@typescript-eslint/parser": "^5.47.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.56.0",
|
||||
"@typescript-eslint/parser": "^5.56.0",
|
||||
"@vue/cli-plugin-babel": "^5.0.8",
|
||||
"@vue/cli-plugin-eslint": "~5.0.8",
|
||||
"@vue/cli-plugin-pwa": "^5.0.8",
|
||||
@ -63,7 +63,7 @@
|
||||
"eslint-plugin-vue": "^8.7.1",
|
||||
"typescript": "~4.9.3",
|
||||
"vue-cli-plugin-i18n": "^2.3.1",
|
||||
"webpack-bundle-tracker": "1.8.0",
|
||||
"webpack-bundle-tracker": "1.8.1",
|
||||
"workbox-background-sync": "^6.5.4",
|
||||
"workbox-expiration": "^6.5.4",
|
||||
"workbox-navigation-preload": "^6.5.4",
|
||||
|
@ -13,240 +13,240 @@
|
||||
"success_moving_resource": "Recurso movido com sucesso!",
|
||||
"success_merging_resource": "Recurso mesclado com sucesso!",
|
||||
"file_upload_disabled": "Upload de arquivos não está habilitado para seu espaço.",
|
||||
"step_time_minutes": "",
|
||||
"confirm_delete": "",
|
||||
"import_running": "",
|
||||
"all_fields_optional": "",
|
||||
"convert_internal": "",
|
||||
"show_only_internal": "",
|
||||
"show_split_screen": "",
|
||||
"Log_Recipe_Cooking": "",
|
||||
"External_Recipe_Image": "",
|
||||
"Add_to_Shopping": "",
|
||||
"Add_to_Plan": "",
|
||||
"Step_start_time": "",
|
||||
"Sort_by_new": "",
|
||||
"Table_of_Contents": "",
|
||||
"Recipes_per_page": "",
|
||||
"Show_as_header": "",
|
||||
"Hide_as_header": "",
|
||||
"Add_nutrition_recipe": "",
|
||||
"Remove_nutrition_recipe": "",
|
||||
"Copy_template_reference": "",
|
||||
"Save_and_View": "",
|
||||
"Manage_Books": "",
|
||||
"Meal_Plan": "",
|
||||
"Select_Book": "",
|
||||
"Select_File": "",
|
||||
"Recipe_Image": "",
|
||||
"Import_finished": "",
|
||||
"View_Recipes": "",
|
||||
"Log_Cooking": "",
|
||||
"New_Recipe": "",
|
||||
"Url_Import": "",
|
||||
"Reset_Search": "",
|
||||
"Recently_Viewed": "",
|
||||
"Load_More": "",
|
||||
"New_Keyword": "",
|
||||
"Delete_Keyword": "",
|
||||
"Edit_Keyword": "",
|
||||
"Edit_Recipe": "",
|
||||
"Move_Keyword": "",
|
||||
"Merge_Keyword": "",
|
||||
"Hide_Keywords": "",
|
||||
"Hide_Recipes": "",
|
||||
"Move_Up": "",
|
||||
"Move_Down": "",
|
||||
"Step_Name": "",
|
||||
"Step_Type": "",
|
||||
"Make_Header": "",
|
||||
"Make_Ingredient": "",
|
||||
"Enable_Amount": "",
|
||||
"Disable_Amount": "",
|
||||
"Add_Step": "",
|
||||
"Keywords": "",
|
||||
"Books": "",
|
||||
"Proteins": "",
|
||||
"Fats": "",
|
||||
"Carbohydrates": "",
|
||||
"Calories": "",
|
||||
"Energy": "",
|
||||
"Nutrition": "",
|
||||
"Date": "",
|
||||
"Share": "",
|
||||
"Automation": "",
|
||||
"Parameter": "",
|
||||
"Export": "",
|
||||
"Copy": "",
|
||||
"Rating": "",
|
||||
"Close": "",
|
||||
"Cancel": "",
|
||||
"Link": "",
|
||||
"Add": "",
|
||||
"New": "",
|
||||
"Note": "",
|
||||
"Success": "",
|
||||
"Failure": "",
|
||||
"Ingredients": "",
|
||||
"Supermarket": "",
|
||||
"Categories": "",
|
||||
"Category": "",
|
||||
"Selected": "",
|
||||
"min": "",
|
||||
"Servings": "",
|
||||
"Waiting": "",
|
||||
"Preparation": "",
|
||||
"External": "",
|
||||
"Size": "",
|
||||
"Files": "",
|
||||
"File": "",
|
||||
"Edit": "",
|
||||
"Image": "",
|
||||
"Delete": "",
|
||||
"Open": "",
|
||||
"Ok": "",
|
||||
"Save": "",
|
||||
"Step": "",
|
||||
"Search": "",
|
||||
"Import": "",
|
||||
"Print": "",
|
||||
"Settings": "",
|
||||
"or": "",
|
||||
"and": "",
|
||||
"Information": "",
|
||||
"Download": "",
|
||||
"Create": "",
|
||||
"Search Settings": "",
|
||||
"View": "",
|
||||
"Recipes": "",
|
||||
"Move": "",
|
||||
"Merge": "",
|
||||
"Parent": "",
|
||||
"delete_confirmation": "",
|
||||
"move_confirmation": "",
|
||||
"merge_confirmation": "",
|
||||
"create_rule": "",
|
||||
"move_selection": "",
|
||||
"merge_selection": "",
|
||||
"Root": "",
|
||||
"Ignore_Shopping": "",
|
||||
"Shopping_Category": "",
|
||||
"Shopping_Categories": "",
|
||||
"Edit_Food": "",
|
||||
"Move_Food": "",
|
||||
"New_Food": "",
|
||||
"Hide_Food": "",
|
||||
"Food_Alias": "",
|
||||
"Unit_Alias": "",
|
||||
"Keyword_Alias": "",
|
||||
"Delete_Food": "",
|
||||
"No_ID": "",
|
||||
"Meal_Plan_Days": "",
|
||||
"merge_title": "",
|
||||
"move_title": "",
|
||||
"Food": "",
|
||||
"Recipe_Book": "",
|
||||
"del_confirmation_tree": "",
|
||||
"delete_title": "",
|
||||
"create_title": "",
|
||||
"edit_title": "",
|
||||
"Name": "",
|
||||
"Type": "",
|
||||
"Description": "",
|
||||
"Recipe": "",
|
||||
"tree_root": "",
|
||||
"Icon": "",
|
||||
"Unit": "",
|
||||
"No_Results": "",
|
||||
"New_Unit": "",
|
||||
"Create_New_Shopping Category": "",
|
||||
"Create_New_Food": "",
|
||||
"Create_New_Keyword": "",
|
||||
"Create_New_Unit": "",
|
||||
"Create_New_Meal_Type": "",
|
||||
"and_up": "",
|
||||
"and_down": "",
|
||||
"Instructions": "",
|
||||
"Unrated": "",
|
||||
"Automate": "",
|
||||
"Empty": "",
|
||||
"Key_Ctrl": "",
|
||||
"Key_Shift": "",
|
||||
"Time": "",
|
||||
"Text": "",
|
||||
"Shopping_list": "",
|
||||
"Added_by": "",
|
||||
"Added_on": "",
|
||||
"AddToShopping": "",
|
||||
"IngredientInShopping": "",
|
||||
"NotInShopping": "",
|
||||
"OnHand": "",
|
||||
"FoodOnHand": "",
|
||||
"FoodNotOnHand": "",
|
||||
"Undefined": "",
|
||||
"Create_Meal_Plan_Entry": "",
|
||||
"Edit_Meal_Plan_Entry": "",
|
||||
"Title": "",
|
||||
"Week": "",
|
||||
"Month": "",
|
||||
"Year": "",
|
||||
"Planner": "",
|
||||
"Planner_Settings": "",
|
||||
"Period": "",
|
||||
"Plan_Period_To_Show": "",
|
||||
"Periods": "",
|
||||
"Plan_Show_How_Many_Periods": "",
|
||||
"Starting_Day": "",
|
||||
"Meal_Types": "",
|
||||
"Meal_Type": "",
|
||||
"Clone": "",
|
||||
"Drag_Here_To_Delete": "",
|
||||
"Meal_Type_Required": "",
|
||||
"Title_or_Recipe_Required": "",
|
||||
"Color": "",
|
||||
"New_Meal_Type": "",
|
||||
"AddFoodToShopping": "",
|
||||
"RemoveFoodFromShopping": "",
|
||||
"DeleteShoppingConfirm": "",
|
||||
"IgnoredFood": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
"Week_Numbers": "",
|
||||
"Show_Week_Numbers": "",
|
||||
"Export_As_ICal": "",
|
||||
"Export_To_ICal": "",
|
||||
"Cannot_Add_Notes_To_Shopping": "",
|
||||
"Added_To_Shopping_List": "",
|
||||
"Shopping_List_Empty": "",
|
||||
"Next_Period": "",
|
||||
"Previous_Period": "",
|
||||
"Current_Period": "",
|
||||
"Next_Day": "",
|
||||
"Previous_Day": "",
|
||||
"Inherit": "",
|
||||
"InheritFields": "",
|
||||
"FoodInherit": "",
|
||||
"ShowUncategorizedFood": "",
|
||||
"GroupBy": "",
|
||||
"SupermarketCategoriesOnly": "",
|
||||
"MoveCategory": "",
|
||||
"CountMore": "",
|
||||
"IgnoreThis": "",
|
||||
"DelayFor": "",
|
||||
"Warning": "",
|
||||
"NoCategory": "",
|
||||
"InheritWarning": "",
|
||||
"ShowDelayed": "",
|
||||
"Completed": "",
|
||||
"OfflineAlert": "",
|
||||
"shopping_share": "",
|
||||
"shopping_auto_sync": "",
|
||||
"mealplan_autoadd_shopping": "",
|
||||
"mealplan_autoexclude_onhand": "",
|
||||
"mealplan_autoinclude_related": "",
|
||||
"default_delay": "",
|
||||
"shopping_share_desc": "",
|
||||
"shopping_auto_sync_desc": "",
|
||||
"mealplan_autoadd_shopping_desc": "",
|
||||
"step_time_minutes": "tempo da etapa em minutos",
|
||||
"confirm_delete": "Tem a certeza que pretende eliminar este {object}?",
|
||||
"import_running": "Importação a decorrer, por favor aguarde!",
|
||||
"all_fields_optional": "Todo os campos são opcionais e podem ficar vazios.",
|
||||
"convert_internal": "Converter em receita interna",
|
||||
"show_only_internal": "Mostrar apenas receitas internas",
|
||||
"show_split_screen": "Vista dividida",
|
||||
"Log_Recipe_Cooking": "Registrar Receitas de Culinária",
|
||||
"External_Recipe_Image": "Imagem da receita externa",
|
||||
"Add_to_Shopping": "Adicionar á lista de compras",
|
||||
"Add_to_Plan": "Adicionar ao plano",
|
||||
"Step_start_time": "Hora de Inicio do passo",
|
||||
"Sort_by_new": "Ordenar por mais recente",
|
||||
"Table_of_Contents": "Tabela de Conteúdos",
|
||||
"Recipes_per_page": "Receitas por página",
|
||||
"Show_as_header": "Mostrar como cabeçalho",
|
||||
"Hide_as_header": "Esconder como cabeçalho",
|
||||
"Add_nutrition_recipe": "Adicionar valor nutricional á receita",
|
||||
"Remove_nutrition_recipe": "Remover valor nutricional da receita",
|
||||
"Copy_template_reference": "Copiar modelo de referencia",
|
||||
"Save_and_View": "Gravar & Ver",
|
||||
"Manage_Books": "Gerenciar Livros",
|
||||
"Meal_Plan": "Plano de Refeição",
|
||||
"Select_Book": "Selecionar Livro",
|
||||
"Select_File": "Selecionar Ficheiro",
|
||||
"Recipe_Image": "Imagem da Receita",
|
||||
"Import_finished": "Importação terminada",
|
||||
"View_Recipes": "Ver Receitas",
|
||||
"Log_Cooking": "Registrar Culinária",
|
||||
"New_Recipe": "Nova Receita",
|
||||
"Url_Import": "Importação de URL",
|
||||
"Reset_Search": "Repor Pesquisa",
|
||||
"Recently_Viewed": "Vistos Recentemente",
|
||||
"Load_More": "Carregar Mais",
|
||||
"New_Keyword": "Nova Palavra Chave",
|
||||
"Delete_Keyword": "Eliminar Palavra Chave",
|
||||
"Edit_Keyword": "Editar Palavra Chave",
|
||||
"Edit_Recipe": "Editar receita",
|
||||
"Move_Keyword": "Mover palavra-chave",
|
||||
"Merge_Keyword": "Unir palavra-chave",
|
||||
"Hide_Keywords": "Esconder palavra-chave",
|
||||
"Hide_Recipes": "Esconder Receitas",
|
||||
"Move_Up": "Mover para cima",
|
||||
"Move_Down": "Mover para baixo",
|
||||
"Step_Name": "Nome do Passo",
|
||||
"Step_Type": "Tipo do passo",
|
||||
"Make_Header": "Tornar cabeçalho",
|
||||
"Make_Ingredient": "Fazer ingrediente",
|
||||
"Enable_Amount": "Ativar quantidade",
|
||||
"Disable_Amount": "Desativar quantidade",
|
||||
"Add_Step": "Adicionar passo",
|
||||
"Keywords": "Palavras-chave",
|
||||
"Books": "Livros",
|
||||
"Proteins": "Proteínas",
|
||||
"Fats": "Gorduras",
|
||||
"Carbohydrates": "Carboidratos",
|
||||
"Calories": "Calorias",
|
||||
"Energy": "Energia",
|
||||
"Nutrition": "Nutrição",
|
||||
"Date": "Data",
|
||||
"Share": "Partilhar",
|
||||
"Automation": "Automação",
|
||||
"Parameter": "Parâmetro",
|
||||
"Export": "Exportar",
|
||||
"Copy": "Copiar",
|
||||
"Rating": "Avaliação",
|
||||
"Close": "Fechar",
|
||||
"Cancel": "Cancelar",
|
||||
"Link": "Ligação",
|
||||
"Add": "Adicionar",
|
||||
"New": "Novo",
|
||||
"Note": "Nota",
|
||||
"Success": "Sucesso",
|
||||
"Failure": "Falha",
|
||||
"Ingredients": "Ingredientes",
|
||||
"Supermarket": "Supermercado",
|
||||
"Categories": "Categorias",
|
||||
"Category": "Categoria",
|
||||
"Selected": "Selecionado",
|
||||
"min": "minimo",
|
||||
"Servings": "Doses",
|
||||
"Waiting": "Em espera",
|
||||
"Preparation": "Preparação",
|
||||
"External": "Externo",
|
||||
"Size": "Tamanho",
|
||||
"Files": "Ficheiros",
|
||||
"File": "Ficheiro",
|
||||
"Edit": "Editar",
|
||||
"Image": "Image",
|
||||
"Delete": "Apagar",
|
||||
"Open": "Abrir",
|
||||
"Ok": "Ok",
|
||||
"Save": "Guardar",
|
||||
"Step": "Passo",
|
||||
"Search": "Pesquisar",
|
||||
"Import": "Importar",
|
||||
"Print": "Imprimir",
|
||||
"Settings": "Definições",
|
||||
"or": "ou",
|
||||
"and": "e",
|
||||
"Information": "Informação",
|
||||
"Download": "Transferência",
|
||||
"Create": "Criar",
|
||||
"Search Settings": "Definições de Pesquisa",
|
||||
"View": "Vista",
|
||||
"Recipes": "Receitas",
|
||||
"Move": "Mover",
|
||||
"Merge": "Juntar",
|
||||
"Parent": "Parente",
|
||||
"delete_confirmation": "Tem a certeza que pretende eliminar {source}?",
|
||||
"move_confirmation": "Mover <i> {child}</i>para parente <i>{parent}</i>",
|
||||
"merge_confirmation": "Substituir <i>{source}</i> por <i>{target}</i>",
|
||||
"create_rule": "e criar automação",
|
||||
"move_selection": "Selecionar um parente {type} para mover {source} para.",
|
||||
"merge_selection": "Substituir todas as ocorrências de {source} por {type}.",
|
||||
"Root": "Raiz",
|
||||
"Ignore_Shopping": "Ignorar compras",
|
||||
"Shopping_Category": "Categoria de Compras",
|
||||
"Shopping_Categories": "Categorias de Compras",
|
||||
"Edit_Food": "Editar comida",
|
||||
"Move_Food": "Mover comida",
|
||||
"New_Food": "Nova comida",
|
||||
"Hide_Food": "Esconder comida",
|
||||
"Food_Alias": "Alcunha da comida",
|
||||
"Unit_Alias": "Alcunha da unidade",
|
||||
"Keyword_Alias": "Alcunha da palavra-chave",
|
||||
"Delete_Food": "Eliminar comida",
|
||||
"No_ID": "identificação não encontrada, impossível eliminar.",
|
||||
"Meal_Plan_Days": "Planos de alimentação futuros",
|
||||
"merge_title": "Unir {type}",
|
||||
"move_title": "Mover {type}",
|
||||
"Food": "Comida",
|
||||
"Recipe_Book": "Livro de Receitas",
|
||||
"del_confirmation_tree": "Tem a certeza que pretende eliminar {source} e todas as suas crianças?",
|
||||
"delete_title": "Eliminar {type}",
|
||||
"create_title": "Novo {type}",
|
||||
"edit_title": "Editar {type}",
|
||||
"Name": "Nome",
|
||||
"Type": "Tipo",
|
||||
"Description": "Descrição",
|
||||
"Recipe": "Receita",
|
||||
"tree_root": "Raiz da árvore",
|
||||
"Icon": "Ícone",
|
||||
"Unit": "Unidade",
|
||||
"No_Results": "Sem resultados",
|
||||
"New_Unit": "Nova Unidade",
|
||||
"Create_New_Shopping Category": "Criar nova categoria de Compras",
|
||||
"Create_New_Food": "Adicionar nova comida",
|
||||
"Create_New_Keyword": "Adicionar nova palavra-chave",
|
||||
"Create_New_Unit": "Adicionar nova unidade",
|
||||
"Create_New_Meal_Type": "Adicionar novo tipo de refeição",
|
||||
"and_up": "e para cima",
|
||||
"and_down": "e para baixo",
|
||||
"Instructions": "Instruções",
|
||||
"Unrated": "Sem classificação",
|
||||
"Automate": "Automatizar",
|
||||
"Empty": "Esvaziar",
|
||||
"Key_Ctrl": "Ctrl",
|
||||
"Key_Shift": "Shift",
|
||||
"Time": "tempo",
|
||||
"Text": "Texto",
|
||||
"Shopping_list": "Lista de Compras",
|
||||
"Added_by": "Adicionado por",
|
||||
"Added_on": "Adicionado a",
|
||||
"AddToShopping": "Adicionar á lista de compras",
|
||||
"IngredientInShopping": "Este ingrediente está na sua lista de compras.",
|
||||
"NotInShopping": "{food} não está na sua lista de compras.",
|
||||
"OnHand": "Atualmente disponível",
|
||||
"FoodOnHand": "Tem {food} disponível.",
|
||||
"FoodNotOnHand": "Não têm {food} disponível.",
|
||||
"Undefined": "Não definido",
|
||||
"Create_Meal_Plan_Entry": "Criar entrada para plano de refeições",
|
||||
"Edit_Meal_Plan_Entry": "Editar entrada de plano de refeições",
|
||||
"Title": "Título",
|
||||
"Week": "Semana",
|
||||
"Month": "Mês",
|
||||
"Year": "Ano",
|
||||
"Planner": "Planeador",
|
||||
"Planner_Settings": "Definições do planeador",
|
||||
"Period": "Período",
|
||||
"Plan_Period_To_Show": "Mostrar semanas, meses ou anos",
|
||||
"Periods": "Períodos",
|
||||
"Plan_Show_How_Many_Periods": "Quantos períodos mostrar",
|
||||
"Starting_Day": "Dia de início da semana",
|
||||
"Meal_Types": "Tipos de refeições",
|
||||
"Meal_Type": "Tipo de refeição",
|
||||
"Clone": "Clonar",
|
||||
"Drag_Here_To_Delete": "Arraste para aqui para eliminar",
|
||||
"Meal_Type_Required": "Tipo de refeição é necessário",
|
||||
"Title_or_Recipe_Required": "Título ou seleção de receitas é necessário",
|
||||
"Color": "Cor",
|
||||
"New_Meal_Type": "Novo tipo de refeição",
|
||||
"AddFoodToShopping": "Adicionar {food} à sua lista de compras",
|
||||
"RemoveFoodFromShopping": "Remover {food} da sua lista de compras",
|
||||
"DeleteShoppingConfirm": "Tem a certeza que pretende remover toda {food} da sua lista de compras?",
|
||||
"IgnoredFood": "{food} está definida para ignorar compras.",
|
||||
"Add_Servings_to_Shopping": "Adicionar {servings} doses ás compras",
|
||||
"Week_Numbers": "Números das semanas",
|
||||
"Show_Week_Numbers": "Mostrar números das semanas?",
|
||||
"Export_As_ICal": "Exportar período atual para o formato ICal",
|
||||
"Export_To_ICal": "Exportar .ics",
|
||||
"Cannot_Add_Notes_To_Shopping": "Notas não podem ser adicionadas à lista de compras",
|
||||
"Added_To_Shopping_List": "Adicionado à lista de compras",
|
||||
"Shopping_List_Empty": "A sua lista de compras encontra-se vazia, pode adicionar itens através do menu de contexto de um plano de refeições (carregar com o botão direito no cartão ou carregar com o botão esquerdo no ícone do menu)",
|
||||
"Next_Period": "Próximo período",
|
||||
"Previous_Period": "Período anterior",
|
||||
"Current_Period": "Período atual",
|
||||
"Next_Day": "Dia seguinte",
|
||||
"Previous_Day": "Dia anterior",
|
||||
"Inherit": "Herdado",
|
||||
"InheritFields": "Campos herdados",
|
||||
"FoodInherit": "Campos herdados por comida",
|
||||
"ShowUncategorizedFood": "Mostrar não definidos",
|
||||
"GroupBy": "Agrupar por",
|
||||
"SupermarketCategoriesOnly": "Apenas categorias do supermercado",
|
||||
"MoveCategory": "Mover para: ",
|
||||
"CountMore": "...+{count} mais",
|
||||
"IgnoreThis": "Nunca adicionar automaticamente {food} á lista de compras",
|
||||
"DelayFor": "Atrasar por {hours} horas",
|
||||
"Warning": "Aviso",
|
||||
"NoCategory": "Nenhuma categoria selecionada.",
|
||||
"InheritWarning": "{food} esta definida para herdar, alterações podem não persistir.",
|
||||
"ShowDelayed": "Mostrar itens atrasados",
|
||||
"Completed": "Completo",
|
||||
"OfflineAlert": "Está offline, lista das compras poderá não sincronizar.",
|
||||
"shopping_share": "Partilhar lista de compras",
|
||||
"shopping_auto_sync": "Sincronização automática",
|
||||
"mealplan_autoadd_shopping": "Adicionar automaticamente plano de refeições",
|
||||
"mealplan_autoexclude_onhand": "Excluir comida disponível",
|
||||
"mealplan_autoinclude_related": "Adicionar receitas relacionadas",
|
||||
"default_delay": "Horas de atraso por padrão",
|
||||
"shopping_share_desc": "Utilizadores poderão ver todos os itens que adicionar à sua lista de compras. Eles devem adicioná-lo para ver os itens na lista deles.",
|
||||
"shopping_auto_sync_desc": "Definir a 0 irá desativar a sincronização automática. Quando se visualiza uma lista de compras a lista é atualizada após um número determinado de segundos para sincronizar com possíveis alterações feitas por outrem. Útil quando se partilha a lista de compras porém irá consumir dados móveis.",
|
||||
"mealplan_autoadd_shopping_desc": "Adicionar automaticamente ingredientes do plano de refeições á lista de compras.",
|
||||
"mealplan_autoexclude_onhand_desc": "",
|
||||
"mealplan_autoinclude_related_desc": "",
|
||||
"default_delay_desc": "",
|
||||
@ -381,7 +381,7 @@
|
||||
"create_food_desc": "Criar a comida e ligar a esta receita.",
|
||||
"err_deleting_protected_resource": "O objeto que você está tentando deletar ainda está sendo utilizado, portanto não pode ser deletado.",
|
||||
"food_inherit_info": "Campos no alimento que devem ser herdados por padrão.",
|
||||
"warning_space_delete": "Você pode deletar seu espaço, inclusive todas as receitas, listas de mercado, planos de comida e tudo mais que você criou. Esta ação não poderá ser desfeita! Você tem certeza que quer fazer isto?",
|
||||
"warning_space_delete": "Pode eliminar o seu espaço incluindo todas as receitas, listas de compras, planos de refeição e tudo o que tenha criado. Isto não pode ser desfeito! Tem a certeza que quer fazer isto?",
|
||||
"facet_count_info": "Mostrar quantidade de receitas nos filtros de busca.",
|
||||
"Plural": "",
|
||||
"plural_short": "",
|
||||
@ -389,5 +389,28 @@
|
||||
"Use_Plural_Unit_Simple": "",
|
||||
"Use_Plural_Food_Always": "",
|
||||
"Use_Plural_Food_Simple": "",
|
||||
"plural_usage_info": ""
|
||||
"plural_usage_info": "",
|
||||
"Protected": "Protegido",
|
||||
"Copy Token": "Copiar Chave",
|
||||
"Ingredient Editor": "Editor de Ingredientes",
|
||||
"Amount": "Quantidade",
|
||||
"plan_share_desc": "Novas entradas do plano de refeições serão automaticamente partilhadas com os utilizadores selecionados.",
|
||||
"New_Entry": "Nova entrada",
|
||||
"Decimals": "Casas decimais",
|
||||
"Default_Unit": "Unidade padrão",
|
||||
"Use_Fractions": "Usar frações",
|
||||
"Use_Fractions_Help": "Converter automaticamente casas decimais para frações enquanto se visualiza uma receita.",
|
||||
"Language": "Linguagem",
|
||||
"Private_Recipe": "Receita Privada",
|
||||
"Auto_Sort": "Classificação automática",
|
||||
"Create_New_Shopping_Category": "Adicionar nova categoria de compras",
|
||||
"Description_Replace": "Substituir descrição",
|
||||
"Instruction_Replace": "Substituir Instrução",
|
||||
"Auto_Sort_Help": "Mover todos os ingredientes para o passo mais indicado.",
|
||||
"Private_Recipe_Help": "A receita só é mostrada ás pessoas com que foi partilhada.",
|
||||
"reusable_help_text": "O link de convite poderá ser usado por mais do que um utilizador.",
|
||||
"Copy Link": "Copiar Ligação",
|
||||
"Theme": "Tema",
|
||||
"one_url_per_line": "Um URL por linha",
|
||||
"Original_Text": "Texto original"
|
||||
}
|
||||
|
216
vue/yarn.lock
216
vue/yarn.lock
@ -183,10 +183,10 @@
|
||||
json5 "^2.2.2"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/eslint-parser@^7.19.1":
|
||||
version "7.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4"
|
||||
integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==
|
||||
"@babel/eslint-parser@^7.21.3":
|
||||
version "7.21.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz#d79e822050f2de65d7f368a076846e7184234af7"
|
||||
integrity sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==
|
||||
dependencies:
|
||||
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
|
||||
eslint-visitor-keys "^2.1.0"
|
||||
@ -1160,6 +1160,18 @@
|
||||
resolved "https://registry.yarnpkg.com/@emoji-mart/data/-/data-1.1.2.tgz#777c976f8f143df47cbb23a7077c9ca9fe5fc513"
|
||||
integrity sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==
|
||||
|
||||
"@eslint-community/eslint-utils@^4.2.0":
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
|
||||
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
|
||||
dependencies:
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@eslint-community/regexpp@^4.4.0":
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.1.tgz#087cb8d9d757bb22e9c9946c9c0c2bf8806830f1"
|
||||
integrity sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==
|
||||
|
||||
"@eslint/eslintrc@^0.4.3":
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
|
||||
@ -1737,7 +1749,7 @@
|
||||
ast-types "0.12.1"
|
||||
recast "0.17.2"
|
||||
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
|
||||
version "7.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
|
||||
@ -1867,148 +1879,88 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
|
||||
integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
|
||||
"@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz#e4fbb4d6dd8dab3e733485c1a44a02189ae75364"
|
||||
integrity sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "4.33.0"
|
||||
"@typescript-eslint/scope-manager" "4.33.0"
|
||||
debug "^4.3.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
ignore "^5.1.8"
|
||||
regexpp "^3.1.0"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^5.0.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz#da3f2819633061ced84bb82c53bba45a6fe9963a"
|
||||
integrity sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "5.51.0"
|
||||
"@typescript-eslint/type-utils" "5.51.0"
|
||||
"@typescript-eslint/utils" "5.51.0"
|
||||
"@eslint-community/regexpp" "^4.4.0"
|
||||
"@typescript-eslint/scope-manager" "5.56.0"
|
||||
"@typescript-eslint/type-utils" "5.56.0"
|
||||
"@typescript-eslint/utils" "5.56.0"
|
||||
debug "^4.3.4"
|
||||
grapheme-splitter "^1.0.4"
|
||||
ignore "^5.2.0"
|
||||
natural-compare-lite "^1.4.0"
|
||||
regexpp "^3.2.0"
|
||||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/experimental-utils@4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
|
||||
integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
|
||||
"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.56.0.tgz#42eafb44b639ef1dbd54a3dbe628c446ca753ea6"
|
||||
integrity sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.7"
|
||||
"@typescript-eslint/scope-manager" "4.33.0"
|
||||
"@typescript-eslint/types" "4.33.0"
|
||||
"@typescript-eslint/typescript-estree" "4.33.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.47.1":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.51.0.tgz#2d74626652096d966ef107f44b9479f02f51f271"
|
||||
integrity sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "5.51.0"
|
||||
"@typescript-eslint/types" "5.51.0"
|
||||
"@typescript-eslint/typescript-estree" "5.51.0"
|
||||
"@typescript-eslint/scope-manager" "5.56.0"
|
||||
"@typescript-eslint/types" "5.56.0"
|
||||
"@typescript-eslint/typescript-estree" "5.56.0"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/scope-manager@4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
|
||||
integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
|
||||
"@typescript-eslint/scope-manager@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz#62b4055088903b5254fa20403010e1c16d6ab725"
|
||||
integrity sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.33.0"
|
||||
"@typescript-eslint/visitor-keys" "4.33.0"
|
||||
"@typescript-eslint/types" "5.56.0"
|
||||
"@typescript-eslint/visitor-keys" "5.56.0"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz#ad3e3c2ecf762d9a4196c0fbfe19b142ac498990"
|
||||
integrity sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==
|
||||
"@typescript-eslint/type-utils@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz#e6f004a072f09c42e263dc50e98c70b41a509685"
|
||||
integrity sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.51.0"
|
||||
"@typescript-eslint/visitor-keys" "5.51.0"
|
||||
|
||||
"@typescript-eslint/type-utils@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz#7af48005531700b62a20963501d47dfb27095988"
|
||||
integrity sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree" "5.51.0"
|
||||
"@typescript-eslint/utils" "5.51.0"
|
||||
"@typescript-eslint/typescript-estree" "5.56.0"
|
||||
"@typescript-eslint/utils" "5.56.0"
|
||||
debug "^4.3.4"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/types@4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
|
||||
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
|
||||
"@typescript-eslint/types@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.56.0.tgz#b03f0bfd6fa2afff4e67c5795930aff398cbd834"
|
||||
integrity sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==
|
||||
|
||||
"@typescript-eslint/types@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.51.0.tgz#e7c1622f46c7eea7e12bbf1edfb496d4dec37c90"
|
||||
integrity sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==
|
||||
|
||||
"@typescript-eslint/typescript-estree@4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
|
||||
integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
|
||||
"@typescript-eslint/typescript-estree@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz#48342aa2344649a03321e74cab9ccecb9af086c3"
|
||||
integrity sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.33.0"
|
||||
"@typescript-eslint/visitor-keys" "4.33.0"
|
||||
debug "^4.3.1"
|
||||
globby "^11.0.3"
|
||||
is-glob "^4.0.1"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz#0ec8170d7247a892c2b21845b06c11eb0718f8de"
|
||||
integrity sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.51.0"
|
||||
"@typescript-eslint/visitor-keys" "5.51.0"
|
||||
"@typescript-eslint/types" "5.56.0"
|
||||
"@typescript-eslint/visitor-keys" "5.56.0"
|
||||
debug "^4.3.4"
|
||||
globby "^11.1.0"
|
||||
is-glob "^4.0.3"
|
||||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/utils@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.51.0.tgz#074f4fabd5b12afe9c8aa6fdee881c050f8b4d47"
|
||||
integrity sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==
|
||||
"@typescript-eslint/utils@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.56.0.tgz#db64705409b9a15546053fb4deb2888b37df1f41"
|
||||
integrity sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.2.0"
|
||||
"@types/json-schema" "^7.0.9"
|
||||
"@types/semver" "^7.3.12"
|
||||
"@typescript-eslint/scope-manager" "5.51.0"
|
||||
"@typescript-eslint/types" "5.51.0"
|
||||
"@typescript-eslint/typescript-estree" "5.51.0"
|
||||
"@typescript-eslint/scope-manager" "5.56.0"
|
||||
"@typescript-eslint/types" "5.56.0"
|
||||
"@typescript-eslint/typescript-estree" "5.56.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
semver "^7.3.7"
|
||||
|
||||
"@typescript-eslint/visitor-keys@4.33.0":
|
||||
version "4.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
|
||||
integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
|
||||
"@typescript-eslint/visitor-keys@5.56.0":
|
||||
version "5.56.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz#f19eb297d972417eb13cb69b35b3213e13cc214f"
|
||||
integrity sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.33.0"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@5.51.0":
|
||||
version "5.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz#c0147dd9a36c0de758aaebd5b48cae1ec59eba87"
|
||||
integrity sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.51.0"
|
||||
"@typescript-eslint/types" "5.56.0"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
|
||||
@ -4368,10 +4320,10 @@ core-js@^2.4.0, core-js@^2.5.0:
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.23.5, core-js@^3.27.1, core-js@^3.6.0, core-js@^3.7.0, core-js@^3.8.3:
|
||||
version "3.27.2"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.2.tgz#85b35453a424abdcacb97474797815f4d62ebbf7"
|
||||
integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==
|
||||
core-js@^3.23.5, core-js@^3.29.1, core-js@^3.6.0, core-js@^3.7.0, core-js@^3.8.3:
|
||||
version "3.29.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6"
|
||||
integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.3"
|
||||
@ -4652,7 +4604,7 @@ debug@^3.2.7:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
|
||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0, debug@^4.3.2, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
@ -6407,7 +6359,7 @@ hash.js@^1.0.0, hash.js@^1.0.3:
|
||||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
he@^1.1.0, he@^1.2.0:
|
||||
he@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
||||
@ -6618,7 +6570,7 @@ ignore@^4.0.6:
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
|
||||
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
|
||||
|
||||
ignore@^5.1.8, ignore@^5.2.0:
|
||||
ignore@^5.2.0:
|
||||
version "5.2.4"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
|
||||
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||
@ -9346,7 +9298,7 @@ regexp.prototype.flags@^1.4.3:
|
||||
define-properties "^1.1.3"
|
||||
functions-have-names "^1.2.2"
|
||||
|
||||
regexpp@^3.1.0, regexpp@^3.2.0:
|
||||
regexpp@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||
@ -11250,13 +11202,13 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
|
||||
hash-sum "^1.0.2"
|
||||
loader-utils "^1.0.2"
|
||||
|
||||
vue-template-compiler@2.6.14:
|
||||
version "2.6.14"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763"
|
||||
integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==
|
||||
vue-template-compiler@2.7.14:
|
||||
version "2.7.14"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1"
|
||||
integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==
|
||||
dependencies:
|
||||
de-indent "^1.0.2"
|
||||
he "^1.1.0"
|
||||
he "^1.2.0"
|
||||
|
||||
vue-template-es2015-compiler@^1.9.0:
|
||||
version "1.9.1"
|
||||
@ -11353,10 +11305,10 @@ webpack-bundle-analyzer@^4.4.0:
|
||||
sirv "^1.0.7"
|
||||
ws "^7.3.1"
|
||||
|
||||
webpack-bundle-tracker@1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack-bundle-tracker/-/webpack-bundle-tracker-1.8.0.tgz#18135492d74e7cff56e87306bfbe7d7b17171537"
|
||||
integrity sha512-5SihX9O+wZVzAvxKIHEW18zTd2BBy5AqV7lMdkKTHd+sQFMpDKNmTcFt6ZgaiV47Db3zB2I0l6MO2pmc2ob+Gg==
|
||||
webpack-bundle-tracker@1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-bundle-tracker/-/webpack-bundle-tracker-1.8.1.tgz#d1cdbd62da622abe1243f099657af86a6ca2656d"
|
||||
integrity sha512-X1qtXG4ue92gjWQO2VhLVq8HDEf9GzUWE0OQyAQObVEZsFB1SUtSQ7o47agF5WZIaHfJUTKak4jEErU0gzoPcQ==
|
||||
dependencies:
|
||||
lodash.assign "^4.2.0"
|
||||
lodash.defaults "^4.2.0"
|
||||
|
Loading…
Reference in New Issue
Block a user