Releases: ZenSoftware/zen
v8.0.0 Authorization Overhaul
This major release contains a complete overhaul for authorization. A lot of thought went into creating a more maintainable authorization scheme. View @zen/nest-auth README.md for documentation. Previously there were specific guards & decorators depending on whether they were being applied to HTTP or GraphQL contexts. These have all been reconciled into guards & decorators that work for both contexts. For example, @GqlUser
& @HttpUser
have been replaced with @CurrentUser
.
Furthermore, the code generation of the GraphQL resolvers for the Prisma CRUD endpoints have been rewritten to properly implement @casl/prisma
. It required some experience with the library to really work out how to best integrated CASL into the api. Authorization is in a much better place for this release.
Features
- Regenerated the entire monorepo utilizing the latest version of Nx.
- All dependencies updated.
- The monorepo now works with other package managers, specifically pnpm.
- Went through the
package.json
with a fine tooth comb and removed all unnecessary dependencies. - Scrubbed out all dead code from the repo.
- Theme has been updated to accommodate for the major changes made in
@angular/material
v15. - TypeScript strict & noImplicitAny flags has been enabled for the Nest app. This ensures many more guarantees for correctness.
- strictPropertyInitialization flag has been disabled due to
class-validator
not playing well with it. - For scalability reasons, the user's
id
field is now aString @default(uuid())
instead ofInt @default(autoincrement())
. kendo
branch has been updated to the newest release of Kendo v11.otel
branch now integrates Prisma tracing.- Added more tests throughout the repo.
- Dockerfile that builds the API for production now utilizes pnpm instead of npm.
- Added a
404 Page not found
component for the Angular app. - Removed
@zen/api-interfaces
library and consolidated everything under@zen/common
. - Integrated Storybook for the
@zen/auth
&@zen/components
libraries. This allows for a simple way to browse the catalogue of components available. - Refactored the services that the code generated GraphQL resolvers depend on to enable the resolvers to be unit testable.
- Polish, polish and more polish. 🎐
v7.0.0 Angular v15 and Prisma 4 upgrades
- Updated to Angular v15
- Updated to Prisma v4
- Updated to PalJS v5
- Integrated
@casl/angular
&@casl/prisma
There was a need for a major refactoring of the project to convert it from a monolith into something much more modular. One in which multiple Nx apps could be backed by their own respective databases. Housing their own schema.prisma
file under apps/<APP_NAME>/schema.prisma
, rather than a single prisma/schema.prisma
file existing at the root.
- Customized the output paths to Prisma client
- Refactoring the Nest auth code into a standalone library named
nest-auth
in which multiple Nest apps could import - Overhauling the code generation scripts under
tools
- Make PrismaSelect work with custom output path paljs/prisma-tools#210
- Custom file for casl-prisma integration via the recommended
casl-prisma.ts
Bug fixes
- Replaced createMongoAbility for createPrismaAbility 5626550 in
apps/portal/src/app/app.module.ts
- A bunch of other miscellaneous refinements (⌒_⌒;)
v6.0.0 Nest v9 & Angular v14
- Upgraded all dependencies
- Converted all forms to Angular 14 typed forms
- Upgraded to Nest v9
- Upgraded to Boostrap v5.2.0
- Replaced
@nest-modules/mailer
with@nestjs-modules/mailer
#22 - Save Google profile
- Refined Kubernetes scripts and provided set of scripts to deploy to a local development cluster. See docs here
- Simplified npm scripts
- New
@AllowAnonymous
decorator the imitates ASP.NET Core AllowAnonymous attribute
🎏 New optional tech integrations
v5.0.4 Sign in with Google & Commitizen
- Integrated sign in with Google via Google OpenID Connect. Serves as an example of how to add OpenID connect providers with
@nestjs/passport
- Integrated Commitizen for standardized git commits.
- Changed GitHub default branch from
main
tobase
. This project is intended to be a base for several forked projects. Duplicate branch names are not allowed, so we do not want to take up themain
branch name. Forked projects can keep their projects up to date with the latest version of this repo by adding this repo as a remote, pulling changes, and then mergingbase
into their ownmain
branch. - Added an example of uploading an array of files via GraphQL.
- Re-named all git tags from
vX.X.X
tozX.X.X
to not occupy conventional semantic versioning tags of forked projects. - Hide
Login
link on/login
page. - Exposed
userId
inAuthService
. - Fixed height issues with
<zen-layout>
- All dependencies updated to latest version.
v4.2.0 Renamed RejectNestedCreateGuard to ForbidNestedCreateGuard & added options
- Created options for ForbidNestedCreateGuard of type { allow: string[] } to list fields to allow
nested creates while forbidding all other nested creates within mutation arguments. This maximizes
flexibility to describe what is safe to expose on the API surface layer.
BREAKING CHANGE: Renamed RejectNestedCreateGuard to ForbidNestedCreateGuard
v4.1.0 RejectNestedCreateGuard for mutations
- #15 Reject nested writes with a guard for security purposes.
v4.0.0 Nx 14 update
- Updated project from Nx v13 to v14
- All dependencies updated
- Small refactor of
@zen/auth
to clean up code
v3.2.0 replaced subscriptions-transport-ws for graphql-ws
- @apollo/client v3.5.10 now supports the newer GraphQL subscription library
graphql-ws
. The starter kit is now converted to utilize the newer library as a substitute for the older librarysubscriptions-transport-ws
. - All dependencies have been updated
v3.0.8 Updated to Font Awesome v6
- Updated Font Awesome to v6
- Styling and theme refinements
v3.0.0 Update to @nestjs/graphql v10
- Update api to integrate @nestjs/graphql v10 & @nestjs/apollo
- Updated all dependencies to latest versions