Claire server NodeJs framework written in Typescript.
npm install @clairejs/server#### 3.28.13
- fix update records handle undefined result
#### 3.28.12
- fix CrudHttpController deleteMany does not return correct fields
#### 3.28.11
- fix LocalJobScheduler publish & subscribe issue
#### 3.28.10
- allow email service to send attachments
#### 3.28.9
- update core and allow query fields with nullable
#### 3.28.8
- fix CrudHttpController getBody not cache validation
#### 3.28.7
- fix update records with hasMany field
#### 3.28.6
- fix calling stripData in with null / undefined
#### 3.28.5
- implement new job scheduler
#### 3.27.6
- fix npm security issues
#### 3.27.5
- implement job retry logic
- use aws scheduler for jobs
#### 3.26.2
- clean up jobs after run
#### 3.26.1
- remove the resolve url function in file upload handler
#### 3.26.0
- update file upload handler
- update packages, remove exit code
#### 3.25.5
- update packages, remove exit code
#### 3.25.4
- update claire orm, claire client
#### 3.25.3
- Fix AWS job scheduler cancel job rule id
#### 3.25.2
- add AbstractRbacAuthorizer
- add other security access condition classes
#### 3.24.0
- add ApiInfo class and @PublicAccess, @TfaRequired decorators
#### 3.23.6
- fix execCount not being calculated correctly
- handle syncJobs being called multiple times
- fix abstract job scheduler & job model
- remove jobId fallback and update schedule job logic
- fix fallback jobId by id in AbstractJob
- fix retryDelayMs
- improve JobScheduler
#### 3.22.15
- skip 4xx log in DefaultHttpRequestHandler
#### 3.22.14
- remove console log, update claire orm
#### 3.22.13
- add log in lambda wrapper
#### 3.22.10
- fix aws job scheduler name space job removal issue
#### 3.22.9
- fix typing issue with job handler function
- fix providing transaction to job remove function
#### 3.22.8
- remove log, aws job scheduler issue fixed
- add log
- fix Lambda Wrapper resolve job scheduler
- add log to debug aws cron
#### 3.22.3:
- fix AwsCron expression
- fix ModelRepository return correct vector props nested fields
- fix uri mapper to map Identifiable classes
- remove support of uri mapper for locale fields
- support uri mapper for nested array field
#### 3.21.9:
- fix express wrapper parse multipart form data
- upgrade packages
- fix getApiInfo return circular object
- fix cron expression
- add log to aws job scheduler & fix cronjob sync
- simplify lambda job scheduler, remove job interval that is less than 60s
#### 3.20.2:
- fix redlock timeout issue
- fix req not resolve leads to undefined request in DefaultHttpRequestHandler
- fix concurrent transactions in updateRecords
- update claire core, claire orm and fix returning
#### 3.19.7:
- public expose endpointMetadat in HttpRequest
- ModelRepository export uriHandling & beforeReturning
- fix uri mapper with vector props
- update claire orm and fix
- fix isEndpoint
- fix ModelRepository getMany
- adapt interface with new claire orm
#### 3.18.2:
- fix multi locale issue with model repo
- fix multi locale field data type
- adapt claire core & clare orm
#### 3.17.10:
- fix socket manager & isEndpoint
- remove handlerFunctionName (using name & displayName instead)
- fix missing controller & handlerFunctionName in EndpointMetadata
- remove AbstractController
- mount socket metadata from getChannelName
- refactor EndpointMetadata, remove MountedEndpointInfo
- add putFile in AbstractFileService
#### 3.16.19:
- fix dependency
- allow file service to resolve empty uri to empty string
- fix job param type from any[] to any
- fix CRUD order
- fix Job repo
- fix AbstractJob
- fix LocalJobScheduler
- add abstract job model, default job repo
#### 3.16.10:
- update core, orm
- fix aws s3 file service
- do not throw when fail to clean up in ModelRepository
- fix file controllers
- fix socket authentication, fix http error code in response
- update claire orm
- update packages, fix mount undefined:undefined when introducing updateRecords
- remove webpack build config, export as esm module
#### 3.15.2:
- add updateRecords to CrudHttpController
#### 3.15.0:
- ioredis becomes peer dependency
- refactor classes to receive Redis instance instead of redis server url
- fix DefaultHttpRequest handler to run access control after middleware
#### 3.14.6:
- update claire core, add LogContext to some implementation
#### 3.14.5:
- update claire core
#### 3.14.4: critical fix
- fix HttpRequestHandler parsing request data
#### 3.14.3:
- lazy validate request data
#### 3.14.2:
- add clientIP in HttpRequest
- move access control to run before middleware
#### 3.14.0: breaking changes
- remove AbstractCacheService
- remove @Injectable from some service implementations
- remove SystemService, move getApiInfo outside of service
- move getUploadUrlForTempUri from FileUploadController to AbstractFileService
#### 3.13.13:
- update claire orm
- fix update many does not return lastModified field
#### 3.13.9:
- return code in response body in case error
#### 3.13.8:
- fix claire client
#### 3.13.7
- fix express & lambda http return code
#### 3.13.6
- update packages
#### 3.13.5
- fix wrong nested returning in createMany
#### 3.13.4
- fix updateMany in ModelRepository not returning full URL for update nested mimeProps
#### 3.13.3
- fix index
#### 3.13.2
- fix IPrincipal
- remove SystemSetting model
#### 3.13.0
- adapt model id changing from number to string
- remove RBAC related implementation
- update AbtractHttpAuthorizer interface
#### 3.12.13
- add missing socket controller permission group metadata
- add AbstractController and fix @Controller decorator to check for AbstractController
- AbstractSocketController now extends AbstractController
#### 3.12.11
- rename AbstractHttpAuthorizationProvider -> AbstractHttpAuthorizer
#### 3.12.10
- fix update many not reflect changes of uriHandling
#### 3.12.9
- remove Twilio dependency & TwilioSmsService
#### 3.12.8
- add @Transactional for AbstractJobController
#### 3.12.7
- fix update many calling before returning before return result
- fix updateMany not returning uri after handling
- add missing file copy endpoint in file manage controller
#### 3.12.4
- fix uri handling in ModelRepository
- move get/set system locale to core
#### 3.12.2
- fix UriMapper typing
- simplify uri mapper, no more record & IQueryProvider
- improve ModelRepository bby removing redundant locale DB requests
#### 3.12.0
- uri mapper does no more provide record id to reduce DB request
#### 3.11.17
- fix remove URI files in CRUD updateMany & deleteMany
- support multi locale handling for uri mapper fields
- add @Head HTTP method & endpoint decorator
#### 3.11.16
- fix ModelRepository return empty object for localof field without translations
- fix localeof not to generate translation for default locale
#### 3.11.11
- fix ExpressWrapper raw parse
- do not log request body
- fix ExpressWrapper raw middleware handle any file type
- handle throw of condition check
- improve model repository to search nested field
#### 3.11.6
- log error when request failed
- add limit setting to json request in ExpressWrapper
- remote get multiple upload url limits
- add default info log in DefaultHttpRequestHandler
#### 3.11.1
- update webpack config
- merge with @clairejs/base-server
#### 3.10.17
- fix lambda request mapper parsing cookies
- move cors config to AbstractHttpRequestHandler
#### 3.10.15
- add / adjust cors setting
- add cookie parser
- fix set cookie with options
- fix express & lambda wrapper to return cookies
#### 3.10.7
- add random to order option in model repository
- socket_read -> disable_write, socket_write -> disable_read
#### 3.10.5
- AbstractJobScheduler run job with spread params
- use setTimeout for local scheduler at timestamp
- fix AwsJobScheduler cron expression
- breaking change update to AbstractFileService
#### 3.9.2
- moving and using crud dto factory from claire core
- add expire param to AbstractCacheService set
#### 3.9.0
- fix AbstractHttpMiddleware to accept response as second param and return boolean as result
#### 3.8.8
- update core package, reduce db calls in ModelRepository
- allow nested update HasMany / HasOne field in ModelRepository
#### 3.8.6
- fix auto fill of post/put default value (no more auto fill, because of access condition check)
- fix getMany projection in ModelRepository
- fix hasMany fields in CRUD projection
#### 3.8.3
- RedisRbacAuthProvider service id resolver
#### 3.8.1
- fix @CurrentUser does no more require Identifiable class
- fix default locale reading empty object properties in ModelRepository
#### 3.8.0
- add @LocaleOf decorator
- handle multi-locale for ModelRepository & CrudHtppController
#### 3.7.12
- handle gcd of interval to reduce step function trigger rate
- handle cron event for lambda wrapper
- fix remove cron job for AwsJobScheduler
- fix cron expression
- fix rate 1 minute without 's'
- add more debug log
- fix cron expression validation
- remove job executor
- implement AwsJobScheduler (EventBridge + Step Function)
- fix LocalJobScheduler interface
- allow persist LocalJobScheduler job info & multi instance support
#### 3.6.23
- unify handle not found error
- fix create many does not return mime field in CrudHttpController
- fix local socket manager buffer message while socket is creating
- fix async handling in lambda socket manager
- handling READY socket message
- fix AwsSocketManager does not remove socket from redis when disconnect
- handle default "" or "/" endpoint correctly
- fix CrudHttpController filter by boolean field
- fix AwsSocketManager not remove socket from channel after disconnection
- support @HasOne for Crud controller
- fix nested queries for ModelRepository
#### 3.6.3
- fix onChannelConnected cannot send back data to socket (because socket was not yet added to channel and old instance was used)
- add READY socket message
#### 3.6.0
- move database to @clairejs/orm package. Bye bye...
#### 3.5.4
- fix aws get socket by id
- send error when close socket
- remove constructor dependency of socket connection handler in socket managers
#### 3.5.0
- use ioredis instead of redis (for redlock to work)
- update job interfaces
- adapt socket managers to use ioredis
#### 3.4.0
- add job related classes
#### 3.3.27
- add random order
- add \_nin operator
#### 3.3.26
- remove socket if authentication failed for aws socket manager
- fix lambda request mapper
- fix Express parse Api gateway query for socket connection
- add debug log
- refactor principal data resolver for socket manager
#### 3.3.19
- ExpressWrapper don't send response for gateway socket integration (except for connection request)
- fix ExpressWrapper handle APi gateway socket message data
- fix LocalSocketManager get socket by id
- fix auth resolver typing
- fix socket data parsing problem
- fix local socket manager subscribe
- update redis client to v4
#### 3.3.10
- fix LambdaWrapper receive ClaireApp factory
- socket pong return original data
- fix ModelRepository getNestedQueries
- add ops to ICrudRepository
#### 3.3.5
- fix socket auth provider
- add getSocketsByChannels
- fix express server exit close connection
- update socket manager to support multiple instances
#### 3.2.8
- fix CrudHttpController condition check for update body
#### 3.2.6
- add cache to RedisRbacAuthProvider
#### 3.2.5
- add TfaRequired() decorator and hasTfa to IPrincipal
- abstract DefaultHttpRequestHandler accessControl
#### 3.2.4
- IPrincipal id to be any
#### 3.2.3
- simplify dto dissolver interface
- introduce DtoRepository
#### 3.2.0
- introduce ICrudRepository
- CrudHttpController now requires param of ICrudRepository
#### 3.1.16
- fix uri mapper in CRUD update request
#### 3.1.15
- re-implement @CurrentUser decorator
#### 3.1.14
- fix UriMapper & UriMapperHandler types
#### 3.1.13
- provide IQueryProvider to uriMapper, move uriMapper to server logic
- provide tmpUri to uriMapper in ModelRepository
#### 3.1.11
- fix CrudHttpController missing description
- fix projection query data type
#### 3.1.9
- strip response data if responseDto is present
#### 3.1.8
- return 401 http code if not auth throw
#### 3.1.7
- fix CrudHtppController merge wrong endpoint
#### 3.1.5
- fix aws socket manager parse null redis
#### 3.1.4
- abstract file service and cache service does not extends AbstractService anymore
- fix abstract file service
#### 3.1.2
- fix server socket sending incorrect plain message
#### 3.1.1
- fix server socket
- add permission conditions to CrudHttpController
- add abstract services
- add FileUploadHandler
- add Abstract RbacAuthProvider, Redis & Cache Rbac Auth Provider
- add rbac dto
- add MaximumQueryLimit & DtoFieldValidation conditions
#### 3.0.36
- fix crud controller metadata
#### 3.0.33
- add @ApiDescription
- add CrudHttpController metadata description
#### 3.0.30
- fix objectTypeConstructor
#### 3.0.29:
- @Socket -> @Message
- use @Socket to get socket injection in controller method
#### 3.0.26:
- add error log in http request handler
#### 3.0.25:
- add null search in vector
- support array search for isSymbol field
#### 3.0.22:
- fix timestamp field
#### 3.0.19:
- fix error throw in transactional
#### 3.0.18:
- fix not escape search value
- fix accent & sensitive search in Mysql and Postgres
#### 3.0.15:
- require injection of database adapter in AbstractSerivce & AbstractHttpController
#### 3.0.14:
- add getById and getByIds to IQuery
#### 3.0.12:
- fix error return
#### 3.0.10:
- remove count query when getOne
#### 3.0.8:
- freeze table name in join clause
#### 3.0.6:
- fix index export
- fix AbstractAccessCondition signature
#### 3.0.5:
- tested on Postgres & MySql
- add join ability to IQuery, awesome!!
#### 3.0.3: http method decorator return type check
- add @ApiResponse decorator to store response body validator
- add TypedPropertyDescriptor in HTTP method decorator to validate function return type (Promise
#### 3.0.2: improve http response
- add binary response
#### 3.0.0:
- update claire core 3.0
- controller function param decorators
- ResponseBuilder
- remove ops in getMany
#### 2.3.13:
- update raw query function signature
#### 2.3.12:
- fix & export CrudService
#### 2.3.10:
- Array & Object model field persist & parse
#### 2.3.9:
- @TextField will default to Sequelize.TEXT if length is not specified
#### 2.3.6:
- fix missing beforeCreate call when update nesting
#### 2.3.1:
- fix returning nested uris
#### 2.3.0:
- introduce CrudService
- CrudHttpController support @HasMany
#### 2.2.12:
- fix isIntegral default
#### 2.2.10:
- update CrudHttpController Update and Delete to return Partial
#### 2.2.2:
- fix @CurrentUser decorator
- implement @CurrentUser decorator
#### 2.2.0:
- add AbstractFileUploadHandler and handle file upload in CrudHttpController
- fix migration contraint remove order
#### 2.1.20:
- extends IPrincipal
#### 2.1.19:
- fix crud http controller not init database adapter
#### 2.1.18:
- downgrade webpack
#### 2.1.16:
- add pg-hstore
#### 2.1.15:
- add optional injection for socket manager
#### 2.1.14:
- AwsSocketManger needs always to be fed by JSON object
#### 2.1.13:
- correct json parsing when hanling aws socket message
#### 2.1.11:
- adjust getMany and getRecords to return Pick type based on projection
- add getRecords for IQuery to return just the records
#### 2.1.9:
- fix CrudHttpController updateMany FilterField condition check
#### 2.1.8:
- fix server socket remove not delete its redis info
- add socket created timestamp info
- add get all alive sockets to remove stale sockets in server
#### 2.1.5:
- support model defualt value in db migrator & adapter
#### 2.1.3:
- add test for cascade delete
#### 2.1.2:
- update claire core
- fix converting QueryCondition use "and" as default operator
#### 2.1.1:
- update claire core
- update implementation of FileLogMedium
#### 2.0.26:
- parse client socket data
- add more debug log
- fix ExpressWrapper AWS GW socket http integration
#### 2.0.17:
- add AWS API GW socket request parser for express
#### 2.0.16:
- add log to http request handler
- refactor to allow AwsSocketManager to be used with ExpressWrapper
#### 2.0.14:
- fix express socket unique id
#### 2.0.13:
- update error code from claire core
#### 2.0.12:
- export Get, Post, Put, Del decorators
#### 2.0.11:
- add log in http request handler
- fix AbstractAccessCondition signature
#### 2.0.9:
- fix AccessCondition (to use injection)
- fix ExpressWrapper & LambdaWrapper to resolve AbstractServerSocketManager
- remove getMountedEndpointInfo from AbstractHttpRequestHandler, move to ServerGlobalStore
- fix property assignment in isolated transactional object
- add log for AwsSocketManager, fix connection problem to redis
#### 2.0.1:
- fix some import redundancies
#### 2.0.0:
- Upgrade with claire core 2.0.0
#### 1.6.4:
- Add pong socket response
#### 1.6.3:
- AbstractDatabaseMigrator: supply migration directory to migrate and rollback functions
- fix migrator cli path
#### 1.6.1:
- AbstractPrincipal -> IPrincipal (for serialization)
#### 1.5.51:
- fix AwsSocketManager not release redis connection, add more log
- fix ExpressWrapper unhandled socket promise exception
#### 1.5.39 (Breaking change):
- fix properties null check
- socket multiplex
#### 1.5.28:
- fix server socket authId => authInfo
#### 1.5.26:
- add OwnedResourceAccessCondition
#### 1.5.24:
- replace HttpRequest.getPrincipalId by HttpRequest.getAuthInfo
#### 1.5.23:
- fix ServerSocket
- fix not remove disconnect socket from socket manager
#### 1.5.15 (Breaking change):
- remove getValue / setValue in HttpRequest
- add setPrincipalId / getPrincipalId in HttpRequest
- adjust Socket Server
#### 1.5.12:
- handle socket in lambda wrapper
#### 1.5.11:
- fix ServerSocket
#### 1.5.6:
- update claire core
- fix ServerSocket
#### 1.5.4:
- run middleware before socket authentication
#### 1.5.2:
- add websocket support in ExpressWrapper
#### 1.5.1:
- update claire core
#### 1.5.0:
- revert back to 1.3.38
#### 1.3.38:
- export QueryCondition
#### 1.3.37:
- return error name instead of TRANSACTION_ERROR
- update claire core
#### 1.3.36:
- fix missing down script of unique constraint in database migrator
- add rollback to database migrator
#### 1.3.34:
- export AbstractDatabaseMigrator
- fix DefaultSqlDatabaseMigrator not generate new unique constraints for new field
#### 1.3.32:
- fix DefaultSqlDatabaseMigrator missing foreign constraint check when add/remove fields
#### 1.3.31:
- update server modify
#### 1.3.30:
- adjust body raw parser in ExpressWrapper
#### 1.3.28:
- fix not supply HttpResponse in Http handler
#### 1.3.27:
- add body parser raw middleware
#### 1.3.26:
- modify express wrapper send result
#### 1.3.25:
- add request options mapper in LambdaWrapper
#### 1.3.24:
- add LambdaWrapper
#### 1.3.23:
- add ExpressWrapper
#### 1.3.22:
- merge accessConditions in CrudHttpController
#### 1.3.21:
- DefaultSqlDatabaseMigrator will no longer generate remove table query.
#### 1.3.20:
- add permissionGroup and displayName metadata for EndpointMetadata
#### 1.3.16:
- update claire core
- allow empty records for CrudHttpController createMany
#### 1.3.15:
- fix incorrect parse Http params
#### 1.3.13:
- update claire core
#### 1.3.12:
- re-introduce terser plugin
- update claire core
#### 1.3.10:
- emit source map
#### 1.3.9:
- update claire core
#### 1.3.8:
- fix missing HttpResponse export
#### 1.3.7:
- upgrade Clairejs/core
#### 1.3.6:
- upgrade Clairejs/core
- interpret @ServerTime and @Timestamp
#### 1.3.2 (Breaking change):
- re-introduce http response to controller
#### 1.2.6:
- add unaccent operators (uSUBSTR, iuSUBSTR)
#### 1.2.5:
- allow multiple calls to boot
#### 1.2.4:
- fix http request handler parse get and delete request body
#### 1.2.2:
- split database migrator
- rework of ClaireServer to be request handler
- remove dependency of expressjs and its middleware
#### 1.1.9:
- revert 1.1.8
#### 1.1.8:
- init app when getExpressApp
#### 1.1.7:
- add pg-hstore as dependency
#### 1.1.6:
- fix autoCommit in @Transactional
#### 1.1.5:
- use AbstractModel id field for primary key query
#### 1.1.3:
- fix returning ids for updateMany and deleteMany
#### 1.1.2:
- fix not auto generate migration when changing cascade of @FK
- set build target es6
#### 1.1.0:
- fix foreign key cascase delete
- fix auto commit of crud http controller
- return array of ids when updateMany or deleteMany
#### 1.0.22:
- CrudHttpController exposes static validators
#### 1.0.21:
- update Clairejs Core
#### 1.0.20:
- update CrudHttpController for query change
#### 1.0.17:
- perform json parsing for fields of request params and queries
#### 1.0.15:
- fix @Searchable in CrudHttpController
#### 1.0.13:
- add iSUBSTR operator to search for case insensitive string
#### 1.0.9:
- fix CrudHttpController endpoint naming
#### 1.0.8:
- fix DefaultHttpRequestHandler upgrade Http
#### 1.0.6:
- fix DefaultHttpRequestHandler cannot return request body when no validator is provided