Releases: reimagined/resolve
Releases · reimagined/resolve
V0.24.2
Framework
Breaking Changes
- jwt passed as third argument to command handler now replaced with object with jwt key
- jwt passed as third argument to read model resolver now replaced with object with jwt key
- resolve-client: waitFor validator now have result confirmation callback as second argument which must be called to accept response
- rename storage-adapters into eventstore-adapter and merge snapshot adapter into it, also drop snapshot adapters from config
- change environment variables names for cloud deployment in cloud.config.js in all examples
- rename api controller to api handler
- internal changes in eventstore and eventbus data structures
- drop mongodb support in all adapter kinds
- change ConcurrentError code from 408 to 409
Features:
- event payload encryption
- implement missing non-serverless postgres adapters
Enhancements
-
fast event bus with high troughput, local-cloud compatibility and durability
-
improve read-model adapters and event-bus for fault-tolerance
-
merge snapshot adapters into eventstore adapters
-
added support of “nested” side effects
-
uploader embedded in saga’s side effects
Bug fixes
Cloud
Features:
- support event-bus highload even if exceeds aws account limits
- support fault-tolarance for bus metadata and read-model data (with compatible adapter)
Enhancements
- custom NPM registry support added to resolve-cloud deploy command
- fast event bus with high troughput, local-cloud compatibility and durability
- improve read-model adapters and event-bus for fault-tolerance
Bug fixes
V0.17.4
Features:
- Add package "resolve-testing-tools"
Read Model testing
import { createReadModel } from 'resolve-testing-tools'
import projection from './common/read-models/something.projection'
import resolvers from './common/read-models/something.resolvers'
describe('read-model "something"', () => {
let readModel
beforeEach(() => {
readModel = createReadModel({
name: 'something',
projection,
resolvers,
/* adapter */ // custom adapter
})
})
afterEach(async () => {
await readModel.dispose()
})
test('resolver "myCustomResolverName" should return correctly result', async () => {
await readModel.applyEvent(event)
await readModel.applyEvents(events)
const result = await readModel.resolvers.myCustomResolverName(resolverArgs, jwtToken)
expect(result).toMatchSnapshot()
})
})
V0.17.3
1. Improvements
1.1. Implement storage adapter disposing and on-demand initialization, extract base functionality in base package
1.2. Pretty-print read/view model query result if possible Fix #820
1.3. Improve read-readmodel-memory indexing speed
2. Bug Fixes
2.1. Fix Bus Adapters. Implement on-demand initialization
2.2. Fix resolve-readmodel-memory operators "$lt", "$lte", "$gt", "$gte"
2.3. Improve resolve HTTP api. Error status code translating to HTTP code Fix #680
V0.17.2
V0.17.1
1. Features
1.1. User compile-time client constants
// Resolve Config
{
customConstants: {
MY_CONSTANT: 'Hello World'
}
}
// code.js
import { MY_CONSTANT } from '$resolve.customConstants'
console.log(MY_CONSTANT)
1.2. Add .prettierrc
2. Bug Fixes
API Handlers
2.1. resolve-api-handler-awslambda: lamdaCallback is not a function
2.2. resolve-api-handler-awslambda: getCustomParams is not a function
2.3. resolve-api-handler-awslambda: 502 internal server error
2.4. resolve-api-handler-awslambda: cookie header missed
Read Model Adapters
2.5. resolve-readmodel-mysql error: bind parameters must not contain undefined
Examples
2.6. [shopping-list-advanced] Aggregate "user" does not contain a JWT check
2.7. The read-model name "Default" is a bad practice
2.8. [shopping-list-advanced] The message "No such user" is a bad practice
V0.17.0
1. Features:
1.1. Prepare resolve
to modules support, including following improvements:
- Constructor/instance-based imports in config factory and import aliases
- Run-time environment variable injection
- Normalize compile-time/run-time file path resolving
{
module: 'path',
options: {},
imports: { // optional
[importName1]: 'importPath1',
[importName2]: 'importPath2'
}
}
1.2. Implement consistent adapter constructors and custom resources abstact consistent import for constructors and instances for bundling.
1.3. Improve AJV validator compliance
1.4. Convenient snapshot adapter instance interface and fix documentation
2. Bug Fixes:
2.1. Example "Hacker News" is not adapted for mobile devices
2.2. Infinite waiting of 'yarn run import' in Hacker-news
2.3. HN example has incorrect error messages in the login page
2.4. Fix testcafe-runner "status": 0|1
2.5. Improve the example "shopping-list" (unit + functional + api-handlers tests)
2.6. Pretty print the Webpack Errors
ERROR in /home/mrcheater/resolve/packages/core/resolve-scripts/lib/core/alias/$resolve.aliasName.js
Module build failed (from ~/resolve/node_modules/val-loader/dist/cjs.js):
Error: File "path/to/file.js" does not exist
at Object.valLoader (~/resolve/node_modules/val-loader/dist/index.js:60:16)
ERROR in ./path/to/file.js
Module build failed (from ~/resolve/packages/core/resolve-scripts/node_modules/babel-loader/lib/index.js):
SyntaxError: path/to/file.js: Unexpected token (63:7)
1 |
> 2 | export default Component
| ^
2.7. Pretty print the Babel Compilation Logs
Successfully compiled 1 file with Babel.
↑ [resolve-api-handler-awslambda] { moduleType: "cjs", moduleType: "server" }
Successfully compiled 1 file with Babel.
↑ [resolve-api-handler-express] { moduleType: "es", moduleType: "server" }
Successfully compiled 1 file with Babel.
...
V0.16.1
Features
1.1. API Handler. Request
{
adapter: "express" | "awslambda",
...
}
1.2. Improve read-model disposing
.dispose(true) // to drop tables
.dispose(false) // to not drop tables