All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Types of changes:
- Added for new features.
- Changed for changes in existing functionality.
- Deprecated for soon-to-be removed features.
- Removed for now removed features.
- Fixed for any bug fixes.
- Security in case of vulnerabilities.
- New Feature - schema usage
- New DB migration adds
clients
,clients_persisted_queries_rel
andschema_hit
tables - Async workrer which analyzes graphql queries and maps them onto schemas to generate schema hits (usage), see
src/worker
and alsoexamples
for more details. As this requires manual setup, released as major version. - graphql schemas & resolvers to provide schema usage
- UI to see schema usage tab (under specific service schema)
- Added rumble-charts dependency to draw graphs
- UI - renamed schemas -> services in menu & added counter
- New DB migration adds
- Added redlock dependency - it now locks schema registration for some time in case multiple instances of new service try to register same schema & overload the DB. Now only one instance gets access and others wait
- Tooling
- added integration tests, mostly useful for worker testing as its async
- async-redis -> ioredis
- docker-compose files are not simpler and more composeable
3.5.0 - 2022-07-14
- knex major version bump 0.20.2 -> 2.1.0
3.4.0 - 2022-06-07
- nodejs version 14 -> 16
3.3.0 - 2022-05-25
- /schema/latest now does not have schema validation, because we expect schema to be validated during /schema/push. This is performance improvement
- added performance tests. Mean duration for simple schema perf test ~ 660 ms (dockerized, your experience may differ)
3.2.3 - 2022-05-25
- /schema/push now returns 400 instead of 500 if you attempt to register service schema with same version
- note, that you can register schema from multiple pods if it is the same (type definitions are matched)
3.2.2 - 2022-05-24
- Fonts in diff & definition tabs are now monospace & same size
- Added support for use
TypeScript
in the client side code. A pair of components were converted to TypeScript to validate the configuration. - Added the configuration for
testing-library/react
andtesting-library/react-hooks
, so unit tests could be added to the client side code. A pair of tests were added to validate the configuration. eslint-webpack-plugin
was added to avoid forgetting to fix eslint and prettier issues during development.- Some commands on Dockerfiles were rewritten to benefit from caching when executing
npm install
3.2.1 - 2022-05-14
- Added react-refresh-webpack-plugin. It only executes in development mode: its setup is conditionally imported in server side, so its inclusion is omitted in production mode.
- For the setup of the previous one, I've had to wrap all the server setup in a async function to make the conditional import works. It doesn't affect to any functionality.
- Added source map loading for node_modules libraries.
- Removed some unused dependencies.
3.2.0 - 2022-05-05
eslint
libraries were being listed as dependencies but not config was set. So an eslint config was added.- Same thing with
prettier
, it was listed as a dependency and executed on commit (not configured for ts files though) but some files were not formatted with it. - Some unused dependencies were removed from both
dependencies
anddevDependencies
. - Removed react-hot-loader because it was not proper configured. I have already a working version with react-refresh-webpack-plugin planned for a future PR.
- Some libraries (mostly for the frontend part compilation) were upgrades in order to
improve
the generation of the bundle. - Some
general cleanup
: removed unused imports, unused declarations, etc.
3.1.0 - 2022-05-05
- Added dependency to winston
- Added an instance of logger in logger.ts and removed the logging functions
- Replace every use of the previous logger functions with calls to the logger exposed from logger.ts
- npm lock version 2
- graphql & @apollo/federation version compatibility
- mysql2 & knex version compatibility
- npm audit issues
3.0.1 - 2022-02-08
- Fixed UI issues with logo causing page slider
- Fixed UI issue with diff view font size and width of comparison blocks
3.0.0 - 2022-02-07
- full rewrite / migration to typescript. Using major version, because of potential incompatibilities that may arise if native installation is used, for example
schema-registry.js
file that was moved from project root intoapp
folder
2.2.4 - 2022-02-05
- 404 error on
__webpack_hmr
URL
2.2.3 - 2022-02-04
- functional tests
2.2.2 - 2022-02-04
- fixed package.lock registry URL to registry.npmjs.org
- switching to fixed node versions
- updated npm dependencies
2.2.1 - 2021-12-08
- Fixed ASYNC_SCHEMA_UPDATES, when the variable is not set, Kafka objects get initialized, and when you don't have Kafka running, it results in a startup error
2.2.0 - 2021-11-23
- New feature - asynchroneous notification of gateway via kafka to avoid polling & reduce schema inconsistency time. See [examples/gateway_service_kafka_notification] for gateway. Use env vars to configure schema-registry
2.1.1 - 2021-11-08
- Dependencies in examples
- Dependabot security updates
2.1.0 - 2021-10-25
- Added dotenv and ability to set configuration vars in .env file
2.0.1 - 2021-10-25
- Security update elliptic from 6.5.3 to 6.5.4
2.0.0 - 2021-10-01
- New endpoint to hard-delete schemas of specific service DELETE /schema/:schemaId
- Renamed endpoint that deactivates specific schema Before: DELETE /schema/delete/:schemaId
After: DELETE /schema/:schemaId
1.2.5 - 2021-06-02
- Service url storage to emulate managed federation
- logo to navigation
- dockerized light mode for faster UI development (see README)
- reduced paddings in UI
1.2.4 - 2021-05-25
- Fixed handling deactivated schemas when building the federated graph
1.2.3 - 2021-02-22
- Dockerfile now builds a self-contained deployment artefact.
- Removed debug logging in production environments.
1.2.2 - 2021-02-01
- Assets can now be served from compiled version, depending on NODE_ENV env var
1.2.1 - 2021-01-22
- ASSETS_URL supports serving service over https now
1.2.0 - 2021-01-12
- SQL migrations are now using sql files instead of js files, in case you need to ALTER DB with separate process and user
1.1.4 - 2020-12-22
- New environment variable controlling the execution of DB migrations on application startup.
- New
npm
command to execute DB migrations explicitly.
1.1.3 - 2020-12-20
- fixed db credentials in docker-compose.yaml causing container startup issues, relying on root:root only now
1.1.2 - 2020-12-17
- Database name is now configureable with env variable DB_NAME
1.1.1 - 2020-12-16
- Default database service name matches config
1.1.0 - 2020-12-14
- Custom directives are supported in /schema/validate and /schema/push APIs
- dependencies updated
1.0.7 - 2020-12-14
- /schema/delete endpoint uses schema id instead of name & version, same as graphql
1.0.6 - 2020-12-11
- Introduced environment variables for such things as MySQL & Redis connection parameters.
1.0.5 - 2020-12-11
- Moved credentials from diplomat.js to config.js
1.0.4 - 2020-09-14
- Updated node-fetch in examples
1.0.3 - 2020-09-09
- Unit testing with jest & travis integration
1.0.2 - 2020-09-08
- Schema character length diff compared to previous version (red/green) in schema version list
- Increased max schema type_defs in body_parser middleware and in DB from ~100KB to ~16MB
1.0.1 - 2020-09-03
- Updated prismjs version 1.19.0 to 1.21.0
1.0.0 - 2020-09-03
- Backend service
- Frontend app
- Examples of gateway + 2 federated services