Because:
- we don't want to maintain the fxa eslint plugin in another repo
This commit:
- move the plugin into the monorepo
Co-authored-by: Peter deHaan <peter@deseloper.com>
Because:
- We want to move our legal doc query to the server side so it can be made with a single call.
This Commit:
- Changes to clone script:
- Use the provided state.json provided by l10n repo
- Moves download to external folder
- Changes to settings:
- Use gql to fetch legal doc
- Changes to gql
- Adds ability to resolve a legal document.
Because:
- we don't want to maintain the fxa eslint plugin in another repo
This commit:
- move the plugin into the monorepo
Co-authored-by: Peter deHaan <peter@deseloper.com>
Because:
- we want to use the latest node LTS major version
This commit:
- upgrades FxA to use node 18, with two workarounds
- Webpack uses a hash algorithm that's no longer supported by default
in node 17+, causing build failures; --openssl-legacy-provider is
used as the workaround
- dns.lookup in node 17+ by default returns the results in the same
order as they are from the resolver, which could lead to
'localhost' resolving to ::1; --dns-result-order=ipv4first is used
as the workaround
Because:
- We are hitting race conditions using postinstall
- If two packages invoke l10n:clone at the same time in their post install git will error out
This Commit:
- Adds a git checkout hook, so the l10n folder is regularly updated
- Remove l10n:clone and l10n:prime commands from the post install
- Moves the l10n:prime command into build and tests commands
- Adds clean script so blank slates can be tested locally
- Adds respective l10n-bundle and l10n-prime scripts per workspace
- Moves the creation of the git-head.txt to the prime step and avoids creating an change on the l10n repo
Co-authored-by: Peter deHaan <peter@deseloper.com>
Because:
- We want to avoid redundant git clone operations
- We want to reduce the number of ftl bundles requested on the client side.
This Commit:
- Adds _scripts/l10n/*.sh for conducting l10n build operations
- Bundles ftl files together into ftl main
- Removes bundle prop on AppLocalizer, so that it uses the default, [main.ftl]
- Replace - with _ in locale names when resolving ftl files
- Removes clone-l10n.sh
Because:
* We need to geoip before saving the customer rather than using their IP
address with Stripe directly.
* Parallelization speeds up the conversion process significantly
This commit:
* Geocodes IP addresses prior to saving using fxa-geodb.
* Adds parallelization with rate limiting.
* Writes results to output CSV.
Closes FXA-6581
Closes FXA-6810
Because:
- We wanted to run a few preliminary checks before proceeding to more
expensive CI jobs. Checks include:
- Compiling typescript in commonly referenced workspace packages
- Linting code that has changed
- Executing Unit Tests for code that has changed
- We wanted to partition test operations into unit tests, and
integration tests. Unit tests can be run relatively quickly and
require no additional infrastructure. Integration tests require
additional infrastructure and generally have longer execution
times. Now that jobs are blocked from running until preliminary
checks pass, one of which is unit tests, it is important to draw a
distinction between these two types of tests.
- We want to avoid unnecessary yarn installs and typescript
compilations, which are time consuming.
- We want to make sure that test results are published and failing tests
can be easily viewed in the CI.
This Commit:
- Creates a build-and-validate job in the CI that builds, lints, and
unit tests code prior to running any other jobs.
- Creates unit-test job in CI config
- Creates integration-test job in CI config
- Removes redundant calls to compile workspace packages. These
are now built up front, cached, and restored as needed for future
runs.
- Extends the create-lists script functionality to generate commands
that can be executed with the parallel command.
- Removes unnecessary yarn install operations. Invoking yarn workspace
focus results in a yarn install. In the case of running tests this is largely
unnecessary, because we already do a yarn install in the base-install
step.
- Make sure test results are exported as junit xml so the CI can report
back on tests that were failing. This was done for a couple workspace
packages, but many were lacking the capability. All test:unit and
test:integration npm scripts now export this data.
- Fixes the following issues encountered along the way:
- Adds logs to monitor heap usage of jest tests. Some
jest tests are still using a lot of memory.
- Moves a few slow / long running tests from unit test to
integration tests.
- Ensures that jest.transform for ts-jest is always instructed
to have the config option isolateModules is set to true. This
definitely decreases memory overhead and resolves some
of the OOM errors we were hitting. It was configured in
some places but not everywhere.
- Exports test results files for all tests
- Exports all test artifacts
- Uses gnu parallel to run tests in parallel. Turns out yarn
workspaces foreach would give a false positive when an OOM
was encountered. Fortunately, the parallel command offered an
acceptable work around, and even offers some nice features
like the load argument, which allows to control test execution a
bit more efficiently.
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.
Because:
- elliptic is in the browserid-verifier's dependency tree and it's
causing security warnings
This commit:
- resolve elliptic to >= a patched version
Because:
- xmldom was a dependency of plist, which is a dependency of
i18n-abide, and xmldom was causing a security alert
This commit:
- resolve plist to a newer version that does not have the xmldom dep
Because:
- We want to be able to see trace information
- We want to be able to export trace information to google cloud
This Commit:
- Adds utility class to fxa-shared for configuring and initializing open telemetry
- Initializes open telemetry in the auth server
- Forces resolution of google-gax.
- Forces resolution of @grpc/grpc-js.
- Adds the jaeger docker container for viewing traces locally. This is accessible on localhost:16686.
Note, adding @google-cloud/opentelemetry-cloud-trace-exporter resulted
in a version conflicts for google-gax and @grpc/grpc-js, which caused
runtime failures when interacting with @google-cloud/firestore. After
many experiments, this seems to do the trick.
Because:
* We should be informed about TS errors before a patch merges into main.
This commit:
* Adds a new script to run as the first task in the test-many job that compiles any modified back-end Typescript packages and any packages that depend on them.
Closes#12823
Co-authored-by: Barry Chen <bchen@mozilla.com>
Because:
- we could easily end up running two instances of the paypal-processor
during a deploy
This commit:
- use a redis based distributed lock to ensure only one
paypal-processor can run per env
- add script options to control the lock name and duration, as well as
completely bypassing the lock
* feat(cli): add 'yarn delete services' command
sometimes you may want to leave all your DBs running but completely start over with fresh services. The pm2 restart command doesn't fully reset the environment and sometimes that's what you want. Delete lets us remove the service from pm2 so we can start it fresh.
* chore(ci): slow down pm2 startup
I've noticed ci failures where the services don't even get started up completely happening more frequently. During the brief time that circleci showed resource graphs the pm2 startup pegged both cpu and memory. If we wait for the services that have a lot of building at startup to finish before starting the next service maybe we'll have better stability.
* chore(tests): remove support-panel from functional test startup
chore(deps): updated yarn to 3.1.0
chore(deps): need to be explicit about postcss deps now, apparently
chore(deps): update yarn relock to skip adding checksums for conditional deps
This matches the default behavior of yarn 3.1
danny hates storybook
update yarn workspace plugin
Because:
* We should document the basic process for new contributors.
This commit:
* Adds a new "Connecting to a local MySQL DB" section to the root project README.
Closes #No issue
Because:
* We want to re-use NestJS modules in multiple packages.
This commit:
* Refactors common NestJS modules from event-broker into fxa-shred
for use by other packages.
Closes#6345
- We have two clients for the auth-server API, one in `content-server/app/scripts/lib/auth` and `fxa-js-client`. The content-server one was meant to replace fxa-js-client but I didn't finish the work to get it running on nodejs.
- Extracts the content-server implementation into `fxa-auth-client`
- Wraps the implementation with shims to work with nodejs in `server.ts`
- Updates references to fxa-js-client to use fxa-auth-client
- Removes fxa-js-client
fixes#5577
Using the newish "exports" property of package.json allows
us to keep the source ts separate from the compiled js
and still use require('fxa-react/components/..'). No more
clean required to run jest tests.
chore(deps): updated aws-sdk
chore(deps): remove raven and update @sentry/*
chore(deps): updated mysql deps
chore(deps): updated eslint-plugin-fxa
chore(deps): updated bluebird
chore(deps): updated request
chore(deps): use jest 24.9.0 (same as react-scripts)
chore(deps): update convict
chore(deps): update morgan
chore(deps): update eslint-plugin-jest
chore(deps): update babel-eslint
chore(deps): removed nodemon
chore(deps): update @types/convict
chore(deps): set @types/jest to match jest version
chore(deps): set @babel/core to ^7.9.0
chore(deps): set @babel/preset-env to 7.9.0
chore(deps): update hapi
with hoisted eslint dependency `npm run lint` can't find
eslint on the path. We've got linting globally as a precommit
hook, it doesn't need to run on tests.
It's easy to not notice when to run a `yarn install` either
when switching branches or doing a git pull. This adds a
hook to diff your previous yarn.lock with the one your changing
to, and if there's changes running 'yarn install' for you.
This adds a base node image and builder image so
that all our service images can share the same
common base, be smaller, and require less customization.
- updated fluent packages to the latest
- implemented localizable currency
- implemented localizable dates
fixes#4668
- fixed errors that resulted from rebase onto Mobile Updates
- fixed bug that would cause the subscriptionToResponse to provide an invoice ID instead of an invoice Number
- removed reference to plan name and replaced with product name
- changed variables to regular stringsOC
- added stricter typing to plan interval
why: several reasons...
- to have a unified approach and pattern for:
- debugging
- fs watching for local dev
- running services in dev
- configuring services in dev
- to improve the initial clone and subsequent `npm ci` experience
- to make future work on tooling easier
1. renamed _scripts/*.sh to use kebab-case
2. linted _scripts with shellcheck
3. added _dev directory and moved pm2 json files there
4. added nps and package-scripts.js
- this allows us to do nice things like: `npm start debug firefox`
- I'd like to expand this further but it's a start
5. refactored the install scripts to make `npm install` nicer
6. renamed pm2 process names for easier control
- can use `pm2 logs auth` instead of the id
start-android is no longer needed so it was removed
along with its dependencies and replaced by adb-reverse
I removed `adr-log` in favor of running `npx adr-log` to
make `npm ci` smaller.
`concurrently` is no longer used.
The remainder were updated to their latest versions.
This patch fixes two things in Customs tests:
- it updates test-local.sh so that it no longer exits with status 0 all
the time; now it exits with the status returned by `tap`
- it fixes all the failing tests that have gone unnoticed due the bug
mentioned above
It's pretty disheartening when your PR fails in ci because of an
npm advisory unrelated to your changes. We still need to be aware
of them but have the ability to more easily keep doing other work.
Running the audit on git push allows us all to see advisories
quickly, but allows us to override and push with --no-verify so
work can continue and the advisory addressed on its own.
* Add a lint:deps job to the top-level package.json, so lerna can run
lint:deps in all packages in parallel.
* Also handle recent handlebars vulnerability, so that builds don't fail.
* Note, the lint:deps job is a no-op in fxa-amplitude-send, as I can't
get it to build yet in the monorepo.
Some of the vulnerabilities are in transitive dependencies, yet the
suggested `npm update foo --depth N` command sometimes seems to do
nothing. There was a related bug in npm 6.6.0 - 6.11.2, fixed by
https://github.com/npm/cli/pull/239, but perhaps that didn't fix all the
cases? (I was using npm 6.12.0.) As a workaround, I've added audit-filter
exceptions where `npm update` wasn't able to fix vulnerabilities.
Fixes#2229.
Because:
* My JS skills were a bit more newbie when I wrote some of this the
first time leading to some copypasta.
* Optional chaining in Typescript 3.7 is slick.
* esModuleInterop has cleaner imports and is recommended.
* We are removing the use of Bluebird everywhere.
This commit:
* Removes some copypasta for more standard JS idioms.
* Updates all the dependencies as well as TypeScript -> 3.7.
* Refactors imports to use esModuleInterop.
* Drops the Bluebird dependency.
- fxa-amplitude-send has a dependency on node-parquet which has several unaccounted for native deps that currently break npm install locally
- node-parquet adds several minutes to the CI build time which is not currently required
- refactored script vars to be more explicit about their purpose
see #3231