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.
5.5.2 2024-05-02
- Add
REDIS_DB
environment variable to customise the logical Redis database to use.
5.5.1 2023-01-29
Security updates of knex and body-parser dependencies
5.5.0 2023-01-29
Redis dependency is now optional and password-protected
- Passing the Redis password to the RedisTransport constructor in src/logger.ts.
- Initializing Redis in the init() function in src/index.ts. With this change the warnings in the logs disappear.
- In order to cover the Redis/password cases, the docker-compose.base.yml now makes sure to launch Redis with password protection.
- Adding an environment variable called LOG_STREAMING_ENABLED to further control if log streaming over Redis should be enabled or not.
5.4.0 2022-10-27
- Add schema normalization (re-formatting) - this should get rid of extra tabbing & spacing when services register their schemas inconsistently
- Fix knex migration generation from commandline (
npm run new-db-migration my-new-migration
) - Improve migration scripts to support JS migrations. Possibly somewhat breaking change for organizations that relied only on .sql files
- Migrate schemas to now include UUID (js migration). If your organization didn't expect/run js migrations, you will have empty UUIDs, but follow-up schema registrations should have it in new schemas, so not a big deal, just may be a bit confusing in the UI
- Do not delete duplicate schemas as its a bit dangerous. You may have had duplicate schemas before. We could have deleted them, but its a risky operation.
If you need to clean them up, here is a script:
UPDATE `container_schema` t3
INNER JOIN `schema` t1
INNER JOIN `schema` t2
SET t3.schema_id = t1.id
WHERE t1.UUID IS NOT null
AND t1.id < t2.id
AND t1.UUID = t2.UUID
AND t3.schema_id = t2.id;
DELETE t2
FROM `schema` t1
INNER JOIN `schema` t2
WHERE
t2.UUID IS NOT null AND
t1.id < t2.id AND
t1.UUID = t2.UUID;
5.3.0 2022-10-11
- added global search input in menu
- removed per-version search as redundant
5.2.0 2022-10-08
- logs tab added
- add winston-redis-stream dependency for logs to stream to redis
- fix re-opening pages/navigation on refresh
5.1.0 2022-10-06
5.0.0 2022-09-27
- apollo federation v2 is used within schema validation. You need to follow the migration guide by apollo, upgrade gateway and may need to change subgraph schemas
- apollo composition library migrated from MIT license to ELv2, which adds limitations on how you can use it, which does not affect graphql-schema-registry source code as we only reference it (and its up to you, client, to install and use the library), but docker image is affected as it bundles/distributes the library.
Basically you cannot use graphql-schema-registry docker image to commercially compete with Apollo Studio, otherwise its fine to use as internal tool. If you feel this is unfair, feel free to create PR with alternative/pluggable schema validation method.
4.0.0 - 2022-07-17
- 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