task(ci): Use docker base image

Because:
- We want to speed up pipeline startup.

This Commit:
- Optimizes docker base image builds for the smallest images possible.
- Enables hard links for yarn cache
- Enables global yarn cache
- Avoids needlessly installing playwright browsers.
- Avoids needlessly running yarn install.
- Uses mozilla/fxa-circleci:ci-base-latest image for running test pipelines
- Uses mozilla/fxa-circleci:ci-base-browsers image for running functional tests pipelines
- Creates configurable executors that can be reused across pipelines
- Upgrades to yarn 3.3.0
- Enabled direct check out of PR code to test, which is faster than circle ci’s checkout command.
- Upgrades functional test to X-Large. This was already the case for playwright tests, but is now extended to content server tests too. This decision was made due to running lots of pipelines and realizing flakiness was largely due to CPU or memory hitting 100% for long periods of time.
- Turns off tracing, since it saves a bit of runtime.
This commit is contained in:
dschom 2022-12-15 15:48:16 -08:00
Родитель 2dafb0eb6d
Коммит acf3c82590
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: F26AEE99174EE68B
29 изменённых файлов: 1371 добавлений и 988 удалений

Просмотреть файл

@ -1,8 +1,43 @@
#!/bin/bash -ex
#!/bin/bash -e
DIR=$(dirname "$0")
cd "$DIR/.."
echo "Running base install!"
echo " . Base commit reference: $(cat base_ref)"
echo " . Current commit reference: $(git rev-parse HEAD)"
echo " . Force yarn install: $FORCE_YARN_INSTALL \n"
yarn install --immutable
node .circleci/modules-to-test.js | tee packages/test.list
./_scripts/create-version-json.sh
# Only run yarn install if there are changes in the lock file or the env, FORCE_YARN_INSTALL,
# indicates a yarn install must be run. The file yarn.lock.base as well as node_modules and
# the yarn cache are now part of the base docker image and represents the last known good state
# of the main branch. If there is no change to the lock file, there is no point in rebuilding,
# and we can use the last known good state.
if $FORCE_YARN_INSTALL == 'true'; then
# This is just here as safety net, in case we encounter an issue with base image state and
# need to force an install.
echo 'Forcing yarn install because FORCE_YARN_INSTALL == true.'
set -x
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 yarn install --immutable --inline-builds;
elif ! cmp --silent yarn.lock yarn.lock.base; then
echo 'Changes detected on yarn.lock!'
echo 'Note that pipelines execute faster if we can skip the yarn install step'
echo 'which is possible when lock files are in sync with latest build from main.\n'
echo 'Please consider rebasing on main, it may improve CI run times times!\n'
# There are a couple tricks here:
# 1. Skip playwright browser install. We can do this because it's already been done in the base image. Installing
# the browser introduces quite a bit of overhead.
# 2. Add inline-builds. This prints out extra info about what is happening during the build step, this might provide
# some insight into whether or not a build is repeatedly failing, or if an package is introducing a lot of overhead
# during install.
set -x
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 yarn install --immutable --inline-builds;
else
echo 'No changes detected on yarn.lock! Skipping yarn install and running postinstall directly.\n'
# If we skip the yarn install, postinstall may still be needed on any workspace that have changed
# since the base docker image was built.
set -x
yarn workspaces foreach --since=$(cat base_ref) -R run postinstall
fi

Просмотреть файл

@ -1,48 +1,138 @@
version: 2.1
parameters:
docker-repo:
type: string
default: mozilla/fxa-circleci
orbs:
browser-tools: circleci/browser-tools@1.2.3
jira: circleci/jira@1.3.1
executors:
content-server-executor:
resource_class: large
# For creating docker builds
docker-build-executor:
parameters:
resource_class:
type: string
default: medium
image:
type: string
default: cimg/node:16.13
resource_class: << parameters.resource_class >>
docker:
- image: cimg/node:16.13-browsers
- image: << parameters.image >>
environment:
DOCKER_BUILDKIT: 1
BUILDKIT_PROGRESS: plain
# Note, the global cache is enabled, because otherwise two caches are created, one in .yarn/berry and one in .yarn/cache.
# Turning this on results in a single cache - .yarn/berry
YARN_ENABLE_GLOBAL_CACHE: true
# Enabling hard links saves about 1.2 GB of space in the image.
YARN_NM_MODE: hardlinks-global
# For any thing that does need context, ie linting, building, unit testing, etc...
default-executor:
parameters:
resource_class:
type: string
default: medium
resource_class: << parameters.resource_class >>
docker:
- image: << pipeline.parameters.docker-repo >>:ci-base-latest
environment:
NODE_ENV: development
FIRESTORE_EMULATOR_HOST: localhost:9090
# For anything that needs a full stack to run
fullstack-executor:
parameters:
resource_class:
type: string
default: medium+
resource_class: << parameters.resource_class >>
docker:
- image: << pipeline.parameters.docker-repo >>:ci-base-latest
- image: cimg/mysql:8.0.28
command: --default-authentication-plugin=mysql_native_password
- image: jdlk7/firestore-emulator
- image: memcached
- image: redis
environment:
NODE_ENV: development
FIRESTORE_EMULATOR_HOST: localhost:9090
# For anything that needs a full stack to run and needs browsers available for
# ui test automation
functional-test-executor:
parameters:
resource_class:
type: string
default: xlarge
resource_class: << parameters.resource_class >>
docker:
- image: << pipeline.parameters.docker-repo >>:ci-base-browsers-latest
- image: redis
- image: memcached
- image: pafortin/goaws
- image: cimg/mysql:8.0.28
command: --default-authentication-plugin=mysql_native_password
- image: jdlk7/firestore-emulator
environment:
NODE_ENV: dev
FXA_EMAIL_ENV: dev
FXA_EMAIL_LOG_LEVEL: debug
RUST_BACKTRACE: 1
AUTH_FIRESTORE_EMULATOR_HOST: localhost:9090
TRACING_SERVICE_NAME: ci-content-server-executor
TRACING_CONSOLE_EXPORTER_ENABLED: true
environment:
NODE_ENV: development
FXA_EMAIL_ENV: development
FXA_EMAIL_LOG_LEVEL: debug
RUST_BACKTRACE: 1
AUTH_FIRESTORE_EMULATOR_HOST: localhost:9090
# Needed for sub plat playwright tests
SUBSCRIPTIONS_PAYPAL_ENABLED: true
PAYPAL_SANDBOX: true
FXA_MX_RECORD_EXCLUSIONS: restmail.dev.lcip.org
commands:
base-install:
# Note: Cloning this way allows us to run a git fetch later on download the road. This type of
# clone operation will result in a .git/config with no user attached that is using a
# https://github.com/mozilla/fxa for the remote origin.
git-clone:
steps:
- run: git clone https://github.com/mozilla/fxa .
- run: git checkout << pipeline.git.revision >>
# Note: Since we use a pre-populated base image that has a .git folder already present (see
# comment above), running a fetch and checkout saves a considerable amount of time when compared
# to a circleci `- checkout` command.
git-checkout:
steps:
- run: git fetch
- run: git checkout << pipeline.git.revision >>
# Note: We no longer cache in step. As long as packages used in the branch aren't that different
# from the packages used in main, which is generally the case, we shouldn't see large install
# times, since the base image will have everything cached.
provision:
steps:
- run: ./.circleci/base-install.sh
- run: node .circleci/modules-to-test.js | tee packages/test.list
- run: ./_scripts/create-version-json.sh
cache-save-yarn:
steps:
- save_cache:
key: fxa-yarn-07-{{ checksum "yarn.lock" }}
paths:
- /home/circleci/.yarn/berry
- /home/circleci/project/.yarn/build-state.yml
- /home/circleci/project/.yarn/install-state.gzs
cache-restore-yarn:
steps:
- checkout
- restore_cache:
keys:
# prefer the exact hash
- fxa-yarn-cache-4-{{ checksum "yarn.lock" }}
# any cache to start with is better than nothing
- fxa-yarn-cache-4-
- run: ./.circleci/base-install.sh
- save_cache:
key: fxa-yarn-cache-4-{{ checksum "yarn.lock" }}
paths:
- .yarn/cache
- .yarn/build-state.yml
- .yarn/install-state.gz
- fxa-yarn-07-{{ checksum "yarn.lock" }}
- fxa-yarn-07-
test-content-server-part:
parameters:
index:
@ -52,11 +142,9 @@ commands:
type: integer
default: 6
steps:
- browser-tools/install-firefox:
version: 102.4.0esr
- browser-tools/install-geckodriver:
version: v0.32.0
- base-install
- git-checkout
- provision
- wait-for-infrastructure
- run:
name: Running test section << parameters.index >> of << parameters.total >>
environment:
@ -74,11 +162,7 @@ commands:
test-settings-server:
steps:
- browser-tools/install-firefox:
version: 102.4.0esr
- browser-tools/install-geckodriver:
version: v0.32.0
- base-install
- provision
- run:
name: Running test...
command: ./.circleci/test-package.sh fxa-settings
@ -91,27 +175,98 @@ commands:
- store_test_results:
path: artifacts/tests
wait-for-infrastructure:
steps:
- run:
name: Wait for MySQL DB
command: ./_scripts/check-mysql.sh
jobs:
deploy-packages:
parameters:
executor:
type: executor
executor: << parameters.executor >>
steps:
- checkout
- cache-restore-yarn
- provision
- setup_remote_docker:
docker_layer_caching: true
- run:
name: Build docker images
command: ./.circleci/build-all.sh
no_output_timeout: 1h
- run:
name: Push to docker hub
command: ./.circleci/deploy-all.sh
- store_artifacts:
path: artifacts
# This deploys a base image of fxa that is useful for CI testing. Think of this image as
# the last known good state of fxa. The image is designed to come with everything required
# to spin up tests pipelines quickly.
deploy-fxa-ci-image:
parameters:
executor:
type: executor
executor: << parameters.executor >>
steps:
- setup_remote_docker:
docker_layer_caching: true
- git-clone
- cache-restore-yarn
- run:
name: Build docker fxa ci image
command: docker build . -f ./_dev/docker/ci-base/Dockerfile -t ci-base-latest
- deploy:
name: Push fxa ci image
command: |
docker login -u $DOCKER_USER_fxa_circleci -p $DOCKER_PASS_fxa_circleci
docker tag ci-base-latest << pipeline.parameters.docker-repo >>:ci-base-latest
docker push << pipeline.parameters.docker-repo >>:ci-base-latest
# This deploys another base image. It's built on top of the image produced above. This
# image has all the libraries needed for running UI tests automation in headless browsers.
deploy-fxa-ci-browser-image:
parameters:
executor:
type: executor
executor: << parameters.executor >>
steps:
- setup_remote_docker:
docker_layer_caching: true
- browser-tools/install-firefox:
version: 102.4.0esr
- browser-tools/install-geckodriver:
version: v0.32.0
- git-clone
- cache-restore-yarn
# Copies the browsers the browsers that were installed above into a location accessible to the
# docker build.
- run: mkdir -p /home/circleci/project/install
- run: cp -r /usr/local/bin/firefox* /home/circleci/project/install/.
- run: cp -r /usr/local/bin/gecko* /home/circleci/project/install/.
- run:
name: Build docker fxa ci image
command: docker build . -f ./_dev/docker/ci-browsers/Dockerfile -t ci-base-browsers-latest
- deploy:
name: Push fxa ci image
command: |
docker login -u $DOCKER_USER_fxa_circleci -p $DOCKER_PASS_fxa_circleci
docker tag ci-base-browsers-latest << pipeline.parameters.docker-repo >>:ci-base-browsers-latest
docker push << pipeline.parameters.docker-repo >>:ci-base-browsers-latest
test-package:
resource_class: medium+
docker:
- image: cimg/node:16.13
- image: redis
- image: memcached
- image: pafortin/goaws
- image: cimg/mysql:8.0.28
command: --default-authentication-plugin=mysql_native_password
- image: jdlk7/firestore-emulator
environment:
NODE_ENV: dev
FIRESTORE_EMULATOR_HOST: localhost:9090
TRACING_SERVICE_NAME: ci-test-package
TRACING_CONSOLE_EXPORTER_ENABLED: true
executor: fullstack-executor
parameters:
package:
type: string
steps:
- base-install
- git-checkout
- provision
- wait-for-infrastructure
- run:
name: Testing << parameters.package >>
command: ./.circleci/test-package.sh << parameters.package >>
@ -122,14 +277,9 @@ jobs:
command: bash <(curl -s https://codecov.io/bash) -F << parameters.package >> -X gcov
lint:
resource_class: medium+
docker:
- image: cimg/node:16.13
environment:
TRACING_SERVICE_NAME: ci-lint
TRACING_CONSOLE_EXPORTER_ENABLED: true
executor: default-executor
steps:
- base-install
- git-checkout
- run:
name: Linting
command: |
@ -143,22 +293,11 @@ jobs:
- jira/notify
test-many:
resource_class: medium+
docker:
- image: cimg/node:16.13
- image: cimg/mysql:8.0.28
command: --default-authentication-plugin=mysql_native_password
- image: jdlk7/firestore-emulator
- image: memcached
- image: redis
environment:
TRACING_SERVICE_NAME: ci-test-many
TRACING_CONSOLE_EXPORTER_ENABLED: true
executor: fullstack-executor
steps:
- base-install
- run:
name: Compiling back-end Typescript services...
command: ./_scripts/compile-backend-ts-services.sh
- git-checkout
- provision
- wait-for-infrastructure
- run:
name: Testing...
command: |
@ -190,96 +329,59 @@ jobs:
- jira/notify
test-settings-server:
executor: content-server-executor
executor: functional-test-executor
steps:
- git-checkout
- provision
- wait-for-infrastructure
- test-settings-server
test-content-server-0:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 0
test-content-server-1:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 1
test-content-server-2:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 2
test-content-server-3:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 3
test-content-server-4:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 4
test-content-server-5:
executor: content-server-executor
executor: functional-test-executor
steps:
- test-content-server-part:
index: 5
deploy-fxa-ci-image:
resource_class: small
docker:
- image: cimg/node:16.13
environment:
DOCKER_BUILDKIT: 1
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
docker_layer_caching: true
- run:
name: Build docker fxa ci image
command: docker build . -f ./_dev/docker/ci/Dockerfile -t fxa-circleci
- deploy:
name: Push fxa ci image
command: |
docker login -u $DOCKER_USER_fxa_circleci -p $DOCKER_PASS_fxa_circleci
docker tag fxa-circleci mozilla/fxa-circleci:ci-latest
docker push mozilla/fxa-circleci:ci-latest
deploy-packages:
resource_class: small
docker:
- image: cimg/node:16.13
environment:
DOCKER_BUILDKIT: 1
steps:
- base-install
- setup_remote_docker:
version: 18.09.3
docker_layer_caching: true
- run:
name: Build docker images
command: ./.circleci/build-all.sh
no_output_timeout: 1h
- run:
name: Push to docker hub
command: ./.circleci/deploy-all.sh
- store_artifacts:
path: artifacts
# This job is manually triggered for now. see .circleci/README.md
test-content-server-remote:
resource_class: large
docker:
# using the old image until we know why the orb is broken with manual jobs
- image: mozilla/fxa-circleci
parameters:
executor:
type: executor
executor: << parameters.executor >>
steps:
- base-install
- git-checkout
- provision
- wait-for-infrastructure
- run:
name: Running test section against a remote target
command: ./packages/fxa-content-server/scripts/test-ci-remote.sh
@ -291,14 +393,10 @@ jobs:
# This job is manually triggered for now. see .circleci/README.md
production-smoke-tests:
resource_class: medium+
docker:
- image: mcr.microsoft.com/playwright:v1.28.0-focal
executor: default-executor
steps:
- base-install
- run:
name: Install playwright
command: npx playwright install --with-deps
- git-checkout
- provision
- run:
name: Running smoke tests
command: yarn workspace functional-tests test-production
@ -308,33 +406,17 @@ jobs:
path: artifacts/tests
playwright-functional-tests:
resource_class: xlarge
executor: functional-test-executor
parallelism: 5
docker:
- image: mcr.microsoft.com/playwright:v1.28.0-focal
- image: redis
- image: memcached
- image: cimg/mysql:8.0.28
command: --default-authentication-plugin=mysql_native_password
- image: jdlk7/firestore-emulator
environment:
NODE_ENV: dev
TRACING_SERVICE_NAME: ci-playwright-functional-tests
TRACING_CONSOLE_EXPORTER_ENABLED: true
SUBSCRIPTIONS_PAYPAL_ENABLED: true
PAYPAL_SANDBOX: true
steps:
# needed by check-mysql.sh
- run: apt-get update && apt-get install -y netcat
- base-install
- run:
name: Install playwright
command: npx playwright install --with-deps
- git-checkout
- provision
- run:
name: Add localhost
command: |
tee -a /etc/hosts \<<<'127.0.0.1 localhost'
cat /etc/hosts
sudo tee -a /etc/hosts \<<<'127.0.0.1 localhost'
sudo cat /etc/hosts
- wait-for-infrastructure
- run:
name: Running playwright tests
command: ./packages/functional-tests/scripts/test-ci.sh
@ -347,16 +429,22 @@ jobs:
path: artifacts/tests
build-and-deploy-storybooks:
resource_class: medium
docker:
- image: cimg/node:16.13
executor: default-executor
steps:
- base-install
- git-checkout
- provision
- run:
name: Build and deploy Storybooks
command: npx github:mozilla-fxa/storybook-gcp-publisher
update-yarn-cache:
executor: default-executor
steps:
- cache-save-yarn
workflows:
test_pull_request:
jobs:
- lint:
@ -365,18 +453,21 @@ workflows:
ignore: main
tags:
ignore: /.*/
- test-many:
filters:
branches:
ignore: main
tags:
ignore: /.*/
- test-settings-server:
filters:
branches:
ignore: main
tags:
ignore: /.*/
- test-package:
name: test-auth-server
package: fxa-auth-server
@ -385,6 +476,7 @@ workflows:
ignore: main
tags:
ignore: /.*/
- test-content-server-0:
filters:
branches:
@ -421,21 +513,25 @@ workflows:
ignore: main
tags:
ignore: /.*/
- playwright-functional-tests:
filters:
branches:
ignore: main
tags:
ignore: /.*/
- build-and-deploy-storybooks:
filters:
branches:
ignore: main
tags:
ignore: /.*/
deploy_branch:
jobs:
- deploy-packages:
executor: docker-build-executor
filters:
branches:
only:
@ -446,6 +542,20 @@ workflows:
ignore: /.*/
- deploy-fxa-ci-image:
executor: docker-build-executor
filters:
branches:
only:
- main
tags:
ignore: /.*/
- deploy-fxa-ci-browser-image:
requires:
- deploy-fxa-ci-image
executor:
name: docker-build-executor
image: cimg/node:16.13-browsers
filters:
branches:
only:
@ -454,11 +564,15 @@ workflows:
ignore: /.*/
- build-and-deploy-storybooks:
filters:
branches:
only: main
tags:
ignore: /.*/
requires:
- deploy-fxa-ci-image
# Once the base image is deployed, go ahead and cache the yarn's state. This will save
# us some time on the next build
- update-yarn-cache:
requires:
- deploy-fxa-ci-image
test_and_deploy_tag:
jobs:
- lint:
@ -518,6 +632,7 @@ workflows:
tags:
only: /.*/
- deploy-packages:
executor: docker-build-executor
filters:
branches:
ignore: /.*/

Просмотреть файл

@ -16,7 +16,7 @@ if grep -e "$MODULE" -e 'all' "$DIR/../packages/test.list" > /dev/null; then
time ./scripts/test-ci.sh
else
# default action
time (yarn workspaces focus "$MODULE" && yarn test)
time (yarn workspaces focus "$MODULE" && NODE_ENV=test yarn test)
fi
else
echo -e "\n###################################"

5
.gitignore поставляемый
Просмотреть файл

@ -69,6 +69,7 @@ Thumbs.db
# Yarn
.yarn/cache
.yarn/berry
.yarn/build-state.yml
.yarn/install-state.gz
@ -143,3 +144,7 @@ packages/fxa-react/test/
packages/fxa-settings/fxa-content-server-l10n/
packages/fxa-settings/public/locales
packages/fxa-settings/test/
Library
.node
process.yml

768
.yarn/releases/yarn-3.1.1.cjs поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

807
.yarn/releases/yarn-3.3.0.cjs поставляемый Executable file

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,3 +1,7 @@
enableGlobalCache: true
nmMode: hardlinks-global
nodeLinker: node-modules
packageExtensions:
@ -18,4 +22,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-outdated.cjs
spec: "https://mskelton.dev/yarn-outdated/v2"
yarnPath: .yarn/releases/yarn-3.1.1.cjs
yarnPath: .yarn/releases/yarn-3.3.0.cjs

Просмотреть файл

@ -0,0 +1,13 @@
FROM cimg/node:16.13
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
ENV YARN_CHECKSUM_BEHAVIOR=throw
ENV FXA_AUTO_INSTALL=0
COPY --chown=circleci:circleci . .
RUN git rev-parse HEAD > base_ref; \
cp yarn.lock yarn.lock.base; \
yarn install --immutable; \
yarn workspace fxa-shared build; \
yarn workspace fxa-auth-client build;

Просмотреть файл

@ -0,0 +1,8 @@
.vscode
.DS_Store
node_modules
_dev/docker
packages/fxa-auth-server/.mail_output
**/docs
!packages/fxa-auth-server/docs/swagger
!packages/fxa-customs-server/docs/swagger

Просмотреть файл

@ -0,0 +1,18 @@
FROM mozilla/fxa-circleci:ci-base-latest
# Empty pull. This has the latest and greatest from fxa.
FROM cimg/node:16.13-browsers
ENV FXA_AUTO_INSTALL=0
# Install playwright browsers
# One of the biggest culprits of slow install times is playwright since it downloads browser binaries
RUN yarn global add playwright; \
rm -rf /home/circleci/.cache/ms-playwright/webkit*; \
rm -rf /home/circleci/.cache/ms-playwright/chromium*;
# Copy over the installed browsers
COPY --chown=circleci:circleci ./install /usr/local/bin/.
# Copy over the source from the ci-base-latest tag.
COPY --chown=circleci:circleci --from=0 /home/circleci/project .

Просмотреть файл

Просмотреть файл

@ -0,0 +1,13 @@
# This is probably not useful for the majority of users; however, it maybe helpful in the
# event you are on a system plagued by checksum mismatches as described here:
# - https://github.com/yarnpkg/berry/issues/2399
#
# By running a yarn install inside the same base container that we use in our CI, we can
# ensure the same checksums are created correctly.
#
FROM cimg/node:16.13
COPY . .
RUN sudo yarn cache clear --all
RUN sudo YARN_CHECKSUM_BEHAVIOR=update yarn install --mode=skip-build
CMD set +x && sudo cat yarn.lock

Просмотреть файл

@ -0,0 +1,9 @@
*
!.yarn/releases
!.yarn/plugins
!yarn.lock
!.yarnrc.yml
!package.json
!packages
packages/*/*
!packages/*/package.json

Просмотреть файл

@ -1,12 +0,0 @@
FROM cimg/node:16.3
# Copy over app code
COPY --chown=circleci:circleci . /fxa
WORKDIR /fxa
# Do a yarn install and make backup of yarn lock file.
# RUN yarn install && cp yarn.lock yarn.lock.base
# Remove unneeded files
RUN find . -regextype egrep ! -regex '.*(\.|\.\.|packages|node_modules).*' -type d -exec rm -rf {} +;
RUN for d in ./packages/*/ ; do find $d -regextype egrep ! -regex '.*(dist|node_modules|fxa-content-server-l10n).*' -type d -exec rm -rf {} +; done;

Просмотреть файл

@ -18,7 +18,8 @@
"ports": "pm2 jlist | json -a -c 'this.pm2_env.env.PORT' pm2_env.env.PORT name",
"heroku-postbuild": "yarn workspaces foreach --verbose --include 123done install",
"mysql": "docker exec -it $(docker container ls | grep mysql | cut -d' ' -f1) mysql",
"firefox": "./packages/fxa-dev-launcher/bin/fxa-dev-launcher.mjs"
"firefox": "./packages/fxa-dev-launcher/bin/fxa-dev-launcher.mjs",
"generate-lockfile": "docker build . -f _dev/docker/ci-lockfile-generator/Dockerfile -t generate-lockfile && docker run generate-lockfile > yarn.lock"
},
"homepage": "https://github.com/mozilla/fxa",
"bugs": {
@ -108,5 +109,5 @@
"underscore": ">=1.13.2",
"url-parse": "^1.5.8"
},
"packageManager": "yarn@3.1.1"
"packageManager": "yarn@3.3.0"
}

Просмотреть файл

@ -2,4 +2,4 @@
yarn workspaces focus fxa-admin-panel
yarn build
yarn test
NODE_ENV=test yarn test

Просмотреть файл

@ -33,6 +33,6 @@
"fast-text-encoding": "^1.0.4",
"mocha": "^10.0.0",
"typescript": "^4.9.3",
"webcrypto-liner": "https://github.com/mozilla-fxa/webcrypto-liner.git#6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb"
"webcrypto-liner": "https://github.com/dschom/webcrypto-liner.git#aba1a4d2049f4827d1feb2942bac42a252ae8546"
}
}

Просмотреть файл

@ -113,7 +113,7 @@
"moment-timezone": "^0.5.35",
"mozlog": "^3.0.2",
"mysql": "^2.18.1",
"node-uap": "https://github.com/mozilla-fxa/node-uap.git#96dc1f9f224422ec184395b6408cd1fc40ee452a",
"node-uap": "https://github.com/dschom/node-uap.git#1e0a696e4ad351fdc7dad2b704af2102467cf958",
"node-zendesk": "^2.2.0",
"nodemailer": "^6.7.3",
"otplib": "^11.0.1",

Просмотреть файл

@ -17,7 +17,15 @@ node -r esbuild-register ./scripts/oauth_gen_keys.js
../../_scripts/check-url.sh localhost:9090
node ../db-migrations/bin/patcher.mjs
# Make sure we have a fresh version of l10n files... This is just a sanity check. It shouldn't be needed...
# rm -rf public
# yarn run postinstall
# Migrate current strings
yarn run merge-ftl
yarn run merge-ftl:test
# Process sass for rendering of email templates
yarn run emails-scss
TESTS=(local oauth remote scripts)

Просмотреть файл

@ -134,7 +134,7 @@
"ua-parser-js": "1.0.2",
"underscore": "^1.13.1",
"verror": "1.10.1",
"webcrypto-liner": "https://github.com/mozilla-fxa/webcrypto-liner.git#6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb",
"webcrypto-liner": "https://github.com/dschom/webcrypto-liner.git#aba1a4d2049f4827d1feb2942bac42a252ae8546",
"webpack": "^4.41.2",
"webpack-cli": "^4.10.0"
},

Просмотреть файл

@ -19,6 +19,7 @@ mkdir -p config
cp ../version.json ./
cp ../version.json config
# TODO: Move this to build-lint phase
yarn lint
cd ../../

Просмотреть файл

@ -1,4 +1,4 @@
#!/bin/bash -e
yarn workspaces focus fxa-event-broker
yarn test --runInBand
yarn test --runInBand

Просмотреть файл

@ -2,4 +2,4 @@
yarn workspaces focus fxa-payments-server
yarn build
yarn test
NODE_ENV=test yarn test

Просмотреть файл

@ -4,4 +4,4 @@ DIR=$(dirname "$0")
cp "$DIR/../../version.json" "$DIR/../config"
yarn workspaces focus fxa-profile-server
yarn test
NODE_ENV=test yarn test

Просмотреть файл

@ -1,4 +1,4 @@
#!/bin/bash -ex
yarn workspaces focus fxa-react
CI=yes yarn test
CI=yes NODE_ENV=test yarn test

Просмотреть файл

@ -103,8 +103,10 @@
"@types/jest": "^26.0.23",
"@types/lodash.groupby": "^4",
"@types/node": "^16.11.3",
"@types/reach__router": "^1.3.11",
"@types/react": "^17.0.14",
"@types/react-dom": "^17.0.9",
"@types/react-router": "^5.1.19",
"@types/react-test-renderer": "^17.0.1",
"@types/testing-library__react-hooks": "^4",
"@types/uuid": "^8",

Просмотреть файл

@ -4,8 +4,9 @@ DIR=$(dirname "$0")
cd "$DIR/.."
# yarn workspaces focus fxa-settings
yarn build
SKIP_PREFLIGHT_CHECK=true yarn test --coverage --watchAll=false
NODE_ENV=test SKIP_PREFLIGHT_CHECK=true yarn test --coverage --watchAll=false
mkdir -p config

Просмотреть файл

@ -179,7 +179,7 @@
"moment": "^2.29.4",
"mozlog": "^3.0.2",
"mysql": "^2.18.1",
"node-uap": "https://github.com/mozilla-fxa/node-uap.git#96dc1f9f224422ec184395b6408cd1fc40ee452a",
"node-uap": "https://github.com/dschom/node-uap.git#1e0a696e4ad351fdc7dad2b704af2102467cf958",
"objection": "^2.2.17",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.5.7",

173
yarn.lock
Просмотреть файл

@ -2,7 +2,7 @@
# Manual changes might be lost - proceed with caution!
__metadata:
version: 5
version: 6
cacheKey: 8
"123done@workspace:packages/123done":
@ -705,6 +705,23 @@ __metadata:
languageName: node
linkType: hard
"@babel/helper-create-class-features-plugin@npm:^7.20.5":
version: 7.20.5
resolution: "@babel/helper-create-class-features-plugin@npm:7.20.5"
dependencies:
"@babel/helper-annotate-as-pure": ^7.18.6
"@babel/helper-environment-visitor": ^7.18.9
"@babel/helper-function-name": ^7.19.0
"@babel/helper-member-expression-to-functions": ^7.18.9
"@babel/helper-optimise-call-expression": ^7.18.6
"@babel/helper-replace-supers": ^7.19.1
"@babel/helper-split-export-declaration": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0
checksum: 51b0662cc44ae5fe3691ed552f97312006709ec3f5321a5e5b5a139a5743eaaf65987f30ee7c171af80ab77460fb57c1970b0b1583dd70d90b58e4433b117a1b
languageName: node
linkType: hard
"@babel/helper-create-regexp-features-plugin@npm:^7.16.0":
version: 7.16.0
resolution: "@babel/helper-create-regexp-features-plugin@npm:7.16.0"
@ -1839,6 +1856,20 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-proposal-private-property-in-object@npm:^7.16.0":
version: 7.20.5
resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.20.5"
dependencies:
"@babel/helper-annotate-as-pure": ^7.18.6
"@babel/helper-create-class-features-plugin": ^7.20.5
"@babel/helper-plugin-utils": ^7.20.2
"@babel/plugin-syntax-private-property-in-object": ^7.14.5
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 513b5e0e2c1b2846be5336cf680e932ae17924ef885aa1429e1a4f7924724bdd99b15f28d67187d0a006d5f18a0c4b61d96c3ecb4902fed3c8fe2f0abfc9753a
languageName: node
linkType: hard
"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5":
version: 7.16.5
resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.5"
@ -11245,6 +11276,13 @@ __metadata:
languageName: node
linkType: hard
"@types/history@npm:^4.7.11":
version: 4.7.11
resolution: "@types/history@npm:4.7.11"
checksum: c92e2ba407dcab0581a9afdf98f533aa41b61a71133420a6d92b1ca9839f741ab1f9395b17454ba5b88cb86020b70b22d74a1950ccfbdfd9beeaa5459fdc3464
languageName: node
linkType: hard
"@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1":
version: 3.3.1
resolution: "@types/hoist-non-react-statics@npm:3.3.1"
@ -11949,6 +11987,15 @@ __metadata:
languageName: node
linkType: hard
"@types/reach__router@npm:^1.3.11":
version: 1.3.11
resolution: "@types/reach__router@npm:1.3.11"
dependencies:
"@types/react": "*"
checksum: 6bcf40714e0dafff66cbf10a534320eae35dae8344f616d2ddf077937287a0df188dfbfb32fb8045cbc641139d1ab69ee5bb258a51642823cadefbcda020a044
languageName: node
linkType: hard
"@types/reach__router@npm:^1.3.7":
version: 1.3.7
resolution: "@types/reach__router@npm:1.3.7"
@ -12015,6 +12062,16 @@ __metadata:
languageName: node
linkType: hard
"@types/react-router@npm:^5.1.19":
version: 5.1.19
resolution: "@types/react-router@npm:5.1.19"
dependencies:
"@types/history": ^4.7.11
"@types/react": "*"
checksum: 3536c3dec7af1f12fed2bea246eb143bd893ee66d4e58c1d3fe734cbd67d8a0aedac0bba9255c58fc69dbd32ae17ad280d6866916aee32653a705178e4a544dc
languageName: node
linkType: hard
"@types/react-stripe-elements@npm:^6.0.5":
version: 6.0.5
resolution: "@types/react-stripe-elements@npm:6.0.5"
@ -21702,7 +21759,7 @@ __metadata:
languageName: node
linkType: hard
"es-abstract@npm:^1.17.0-next.0, es-abstract@npm:^1.17.0-next.1, es-abstract@npm:^1.17.4, es-abstract@npm:^1.17.5, es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.5.0":
"es-abstract@npm:^1.17.0-next.0, es-abstract@npm:^1.17.0-next.1, es-abstract@npm:^1.17.4, es-abstract@npm:^1.17.5, es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1":
version: 1.19.1
resolution: "es-abstract@npm:1.19.1"
dependencies:
@ -21762,6 +21819,39 @@ __metadata:
languageName: node
linkType: hard
"es-abstract@npm:^1.20.4, es-abstract@npm:^1.5.0":
version: 1.20.5
resolution: "es-abstract@npm:1.20.5"
dependencies:
call-bind: ^1.0.2
es-to-primitive: ^1.2.1
function-bind: ^1.1.1
function.prototype.name: ^1.1.5
get-intrinsic: ^1.1.3
get-symbol-description: ^1.0.0
gopd: ^1.0.1
has: ^1.0.3
has-property-descriptors: ^1.0.0
has-symbols: ^1.0.3
internal-slot: ^1.0.3
is-callable: ^1.2.7
is-negative-zero: ^2.0.2
is-regex: ^1.1.4
is-shared-array-buffer: ^1.0.2
is-string: ^1.0.7
is-weakref: ^1.0.2
object-inspect: ^1.12.2
object-keys: ^1.1.1
object.assign: ^4.1.4
regexp.prototype.flags: ^1.4.3
safe-regex-test: ^1.0.0
string.prototype.trimend: ^1.0.6
string.prototype.trimstart: ^1.0.6
unbox-primitive: ^1.0.2
checksum: 00564779ddaf7fb977ab5aa2b8ea2cbd4fa2335ad5368f788bd0bb094c86bc1790335dd9c3e30374bb0af2fa54c724fb4e0c73659dcfe8e427355a56f2b65946
languageName: node
linkType: hard
"es-array-method-boxes-properly@npm:^1.0.0":
version: 1.0.0
resolution: "es-array-method-boxes-properly@npm:1.0.0"
@ -24576,7 +24666,7 @@ fsevents@^1.2.7:
"fsevents@patch:fsevents@^1.2.7#~builtin<compat/fsevents>":
version: 1.2.13
resolution: "fsevents@patch:fsevents@npm%3A1.2.13#~builtin<compat/fsevents>::version=1.2.13&hash=18f3a7"
resolution: "fsevents@patch:fsevents@npm%3A1.2.13#~builtin<compat/fsevents>::version=1.2.13&hash=d11327"
dependencies:
bindings: ^1.5.0
nan: ^2.12.1
@ -24586,7 +24676,7 @@ fsevents@^1.2.7:
"fsevents@patch:fsevents@^2.1.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@^2.1.3#~builtin<compat/fsevents>, fsevents@patch:fsevents@^2.3.2#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>":
version: 2.3.2
resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7"
resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=df0bf1"
dependencies:
node-gyp: latest
conditions: os=darwin
@ -24595,7 +24685,7 @@ fsevents@^1.2.7:
"fsevents@patch:fsevents@~2.1.1#~builtin<compat/fsevents>":
version: 2.1.2
resolution: "fsevents@patch:fsevents@npm%3A2.1.2#~builtin<compat/fsevents>::version=2.1.2&hash=18f3a7"
resolution: "fsevents@patch:fsevents@npm%3A2.1.2#~builtin<compat/fsevents>::version=2.1.2&hash=31d12a"
dependencies:
node-gyp: latest
conditions: os=darwin
@ -24836,7 +24926,7 @@ fsevents@~2.1.1:
mocha: ^10.0.0
node-fetch: ^2.6.7
typescript: ^4.9.3
webcrypto-liner: "https://github.com/mozilla-fxa/webcrypto-liner.git#6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb"
webcrypto-liner: "https://github.com/dschom/webcrypto-liner.git#aba1a4d2049f4827d1feb2942bac42a252ae8546"
languageName: unknown
linkType: soft
@ -24963,7 +25053,7 @@ fsevents@~2.1.1:
mozlog: ^3.0.2
mysql: ^2.18.1
nock: ^13.2.2
node-uap: "https://github.com/mozilla-fxa/node-uap.git#96dc1f9f224422ec184395b6408cd1fc40ee452a"
node-uap: "https://github.com/dschom/node-uap.git#1e0a696e4ad351fdc7dad2b704af2102467cf958"
node-zendesk: ^2.2.0
nodemailer: ^6.7.3
nodemon: ^2.0.19
@ -25164,7 +25254,7 @@ fsevents@~2.1.1:
upng-js: 2.1.0
url-loader: 4.1.1
verror: 1.10.1
webcrypto-liner: "https://github.com/mozilla-fxa/webcrypto-liner.git#6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb"
webcrypto-liner: "https://github.com/dschom/webcrypto-liner.git#aba1a4d2049f4827d1feb2942bac42a252ae8546"
webpack: ^4.41.2
webpack-cli: ^4.10.0
webpack-dev-middleware: ^5.3.3
@ -25700,8 +25790,10 @@ fsevents@~2.1.1:
"@types/lodash.groupby": ^4
"@types/material-ui": ^0.21.8
"@types/node": ^16.11.3
"@types/reach__router": ^1.3.11
"@types/react": ^17.0.14
"@types/react-dom": ^17.0.9
"@types/react-router": ^5.1.19
"@types/react-test-renderer": ^17.0.1
"@types/react-webcam": ^3.0.0
"@types/testing-library__react-hooks": ^4
@ -25842,7 +25934,7 @@ fsevents@~2.1.1:
moment: ^2.29.4
mozlog: ^3.0.2
mysql: ^2.18.1
node-uap: "https://github.com/mozilla-fxa/node-uap.git#96dc1f9f224422ec184395b6408cd1fc40ee452a"
node-uap: "https://github.com/dschom/node-uap.git#1e0a696e4ad351fdc7dad2b704af2102467cf958"
nyc: ^15.1.0
objection: ^2.2.17
pm2: ^5.2.2
@ -26861,6 +26953,15 @@ fsevents@~2.1.1:
languageName: node
linkType: hard
"gopd@npm:^1.0.1":
version: 1.0.1
resolution: "gopd@npm:1.0.1"
dependencies:
get-intrinsic: ^1.1.3
checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6
languageName: node
linkType: hard
"got@npm:11.8.5":
version: 11.8.5
resolution: "got@npm:11.8.5"
@ -35602,15 +35703,15 @@ fsevents@~2.1.1:
languageName: node
linkType: hard
"node-uap@https://github.com/mozilla-fxa/node-uap.git#96dc1f9f224422ec184395b6408cd1fc40ee452a":
"node-uap@https://github.com/dschom/node-uap.git#1e0a696e4ad351fdc7dad2b704af2102467cf958":
version: 0.0.3
resolution: "node-uap@https://github.com/mozilla-fxa/node-uap.git#commit=96dc1f9f224422ec184395b6408cd1fc40ee452a"
resolution: "node-uap@https://github.com/dschom/node-uap.git#commit=1e0a696e4ad351fdc7dad2b704af2102467cf958"
dependencies:
array.prototype.find: 2.0.0
uap-core: "https://github.com/ua-parser/uap-core#2e6c983e42e7aae7d957a263cb4d3de7ccbd92af"
uap-ref-impl: 0.2.0
yamlparser: 0.0.2
checksum: 276cf06bfabf27aeee6f6a5aed742d2842cee5b520892d57a2bb8df99acacc5c11e152072c109ed7cb4e9ef4f6018a6c1531c40800b192c07b4b174f77e8b999
checksum: 532a6bfff2d0243051fe79e2ca04944c95bff6662b098b50fcda61413c4992970f27af43f7c6874b50187fb95dcfe148e28b06af2ccb00376bf8430f696a9778
languageName: node
linkType: hard
@ -41597,14 +41698,14 @@ resolve@^2.0.0-next.3:
"resolve@patch:resolve@1.1.7#~builtin<compat/resolve>":
version: 1.1.7
resolution: "resolve@patch:resolve@npm%3A1.1.7#~builtin<compat/resolve>::version=1.1.7&hash=07638b"
resolution: "resolve@patch:resolve@npm%3A1.1.7#~builtin<compat/resolve>::version=1.1.7&hash=3bafbf"
checksum: e9dbca78600ae56835c43a09f1276876c883e4b4bbd43e2683fa140671519d2bdebeb1c1576ca87c8c508ae2987b3ec481645ac5d3054b0f23254cfc1ce49942
languageName: node
linkType: hard
"resolve@patch:resolve@1.18.1#~builtin<compat/resolve>":
version: 1.18.1
resolution: "resolve@patch:resolve@npm%3A1.18.1#~builtin<compat/resolve>::version=1.18.1&hash=07638b"
resolution: "resolve@patch:resolve@npm%3A1.18.1#~builtin<compat/resolve>::version=1.18.1&hash=c3c19d"
dependencies:
is-core-module: ^2.0.0
path-parse: ^1.0.6
@ -41614,7 +41715,7 @@ resolve@^2.0.0-next.3:
"resolve@patch:resolve@^1.1.3#~builtin<compat/resolve>, resolve@patch:resolve@^1.1.4#~builtin<compat/resolve>, resolve@patch:resolve@^1.1.6#~builtin<compat/resolve>, resolve@patch:resolve@^1.1.7#~builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.11.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.3.2#~builtin<compat/resolve>, resolve@patch:resolve@^1.8.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.9.0#~builtin<compat/resolve>, resolve@patch:resolve@~1.20.0#~builtin<compat/resolve>":
version: 1.20.0
resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin<compat/resolve>::version=1.20.0&hash=07638b"
resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin<compat/resolve>::version=1.20.0&hash=c3c19d"
dependencies:
is-core-module: ^2.2.0
path-parse: ^1.0.6
@ -41624,7 +41725,7 @@ resolve@^2.0.0-next.3:
"resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>":
version: 1.22.1
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b"
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=c3c19d"
dependencies:
is-core-module: ^2.9.0
path-parse: ^1.0.7
@ -41637,7 +41738,7 @@ resolve@^2.0.0-next.3:
"resolve@patch:resolve@^2.0.0-next.3#~builtin<compat/resolve>":
version: 2.0.0-next.3
resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin<compat/resolve>::version=2.0.0-next.3&hash=07638b"
resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin<compat/resolve>::version=2.0.0-next.3&hash=c3c19d"
dependencies:
is-core-module: ^2.2.0
path-parse: ^1.0.6
@ -44034,6 +44135,17 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard
"string.prototype.trimend@npm:^1.0.6":
version: 1.0.6
resolution: "string.prototype.trimend@npm:1.0.6"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e
languageName: node
linkType: hard
"string.prototype.trimstart@npm:^1.0.4":
version: 1.0.4
resolution: "string.prototype.trimstart@npm:1.0.4"
@ -44055,6 +44167,17 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard
"string.prototype.trimstart@npm:^1.0.6":
version: 1.0.6
resolution: "string.prototype.trimstart@npm:1.0.6"
dependencies:
call-bind: ^1.0.2
define-properties: ^1.1.4
es-abstract: ^1.20.4
checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41
languageName: node
linkType: hard
"string_decoder@npm:0.10, string_decoder@npm:~0.10.0, string_decoder@npm:~0.10.x":
version: 0.10.31
resolution: "string_decoder@npm:0.10.31"
@ -46272,21 +46395,21 @@ resolve@^2.0.0-next.3:
"typescript@patch:typescript@^4.9.3#~builtin<compat/typescript>":
version: 4.9.3
resolution: "typescript@patch:typescript@npm%3A4.9.3#~builtin<compat/typescript>::version=4.9.3&hash=493e53"
resolution: "typescript@patch:typescript@npm%3A4.9.3#~builtin<compat/typescript>::version=4.9.3&hash=d73830"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: ef65c22622d864497d0a0c5db693523329b3284c15fe632e93ad9aa059e8dc38ef3bd767d6f26b1e5ecf9446f49bd0f6c4e5714a2eeaf352805dc002479843d1
checksum: 67ca21a387c0572f1c04936e638dde7782c5aa520c3754aadc7cc9b7c915da9ebc3e27c601bfff4ccb7d7264e82dce6d277ada82ec09dc75024349e0ef64926d
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A^4.5.2#~builtin<compat/typescript>":
version: 4.5.2
resolution: "typescript@patch:typescript@npm%3A4.5.2#~builtin<compat/typescript>::version=4.5.2&hash=493e53"
resolution: "typescript@patch:typescript@npm%3A4.5.2#~builtin<compat/typescript>::version=4.5.2&hash=bcec9a"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 53838d56aba6fcc947d63aa0771e5d966b1b648fddafed6e221d7f38c71219c4e036ece8cfe9e35ed80cf5a35ff4eb958934c993f99c3233773ec4f9ccd53f69
checksum: e25e689eba64f7da7cfc43f8ea76cac7176b56caba42655f0a4cb29c0b7c36e67ca54f33df95902859f56108464245d8b45bcdfe21e3d66d9560feb8db780246
languageName: node
linkType: hard
@ -46299,7 +46422,7 @@ resolve@^2.0.0-next.3:
"uap-core@https://github.com/ua-parser/uap-core#2e6c983e42e7aae7d957a263cb4d3de7ccbd92af":
version: 0.6.7
resolution: "uap-core@https://github.com/ua-parser/uap-core#commit=2e6c983e42e7aae7d957a263cb4d3de7ccbd92af"
resolution: "uap-core@https://github.com/ua-parser/uap-core.git#commit=2e6c983e42e7aae7d957a263cb4d3de7ccbd92af"
checksum: 66623ae9913352f46d18f3e0ce6b9dfb9415323f02dba860ef7d855c04412f248318024b9ba77dc375dc366bda98ee10d0309feaccef7f7572869ffdc3f6fce2
languageName: node
linkType: hard
@ -47463,14 +47586,14 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard
"webcrypto-liner@https://github.com/mozilla-fxa/webcrypto-liner.git#6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb":
"webcrypto-liner@https://github.com/dschom/webcrypto-liner.git#aba1a4d2049f4827d1feb2942bac42a252ae8546":
version: 0.1.36
resolution: "webcrypto-liner@https://github.com/mozilla-fxa/webcrypto-liner.git#commit=6b3ad971b3b1f0d4da3855c6ceee9b3afa9f0eeb"
resolution: "webcrypto-liner@https://github.com/dschom/webcrypto-liner.git#commit=aba1a4d2049f4827d1feb2942bac42a252ae8546"
dependencies:
"@dannycoates/elliptic": ^6.4.2
asmcrypto.js: ^0.22.0
webcrypto-core: "https://github.com/mozilla-fxa/webcrypto-core.git#e0bb9e60e7df2abc6d13caf4a15cf22188e2981a"
checksum: ca2b7ea2b8af2d8def878ecfa69b5fdf49ea3d848fb30f3db87fc1a763bdaeaa9de54715bebea4f05acac2a2967164b76420a42bf84e98984643ec2369151181
checksum: 52544d9ad86b4cfd78c79634a0a996604aeffdb125655601b9f043e8240db4440b67c62fc611f5077e1552a6a24f62bb4b3aa9d6c39ab022e20dc415b51a4a0b
languageName: node
linkType: hard