@event-driven-io/emmett 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/package.json +68 -0
package/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
[<img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white" height="20px" />](https://www.linkedin.com/in/oskardudycz/) [](https://github.com/sponsors/oskardudycz/) [](https://event-driven.io/?utm_source=event_sourcing_nodejs) [](https://www.architecture-weekly.com/?utm_source=event_sourcing_nodejs)
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
# Emmett - a Node.js Event Store
|
|
6
|
+
|
|
7
|
+
Nowadays, storage is cheap, but the information is priceless.
|
|
8
|
+
|
|
9
|
+
Event Sourcing, contrary to the standard approach, keeps all the facts that happened in our system. To do that, it needs an event store: a database designed for its needs.
|
|
10
|
+
|
|
11
|
+
**This project aims to deliver an opinionated event store based on my experience working on [Marten](martendb.io/) and [EventStoreDB](https://developers.eventstore.com/).**
|
|
12
|
+
|
|
13
|
+
Check my inspirations and what I'm up to in [Reference materials](./ReferenceMaterials.md).
|
|
14
|
+
|
|
15
|
+
## FAQ
|
|
16
|
+
|
|
17
|
+
### **Is it production-ready?**
|
|
18
|
+
|
|
19
|
+
Nope.
|
|
20
|
+
|
|
21
|
+
### **Will it be?**
|
|
22
|
+
|
|
23
|
+
Maybe.
|
|
24
|
+
|
|
25
|
+
### **Why Node.js?**
|
|
26
|
+
|
|
27
|
+
I like its minimalistic approach and flexibility, plus TypeScript is an excellent language with its shapeshifter capabilities. Plus, I've been asked if I could deliver such a store for Node.js.
|
|
28
|
+
|
|
29
|
+
### Why Emmeett?
|
|
30
|
+
|
|
31
|
+
[Because](https://en.m.wikipedia.org/wiki/Emmett_Brown).
|
|
32
|
+
|
|
33
|
+
### **What features it has?**
|
|
34
|
+
|
|
35
|
+
Currently, none, but that will change.
|
|
36
|
+
|
|
37
|
+
### **What features will it have?**
|
|
38
|
+
|
|
39
|
+
We'll see, but for sure, I'd like to have the following:
|
|
40
|
+
|
|
41
|
+
- atomicity of the stream append operations,
|
|
42
|
+
- reading your writes,
|
|
43
|
+
- subscriptions based on Postgres logical replications,
|
|
44
|
+
- Postgres partitioning,
|
|
45
|
+
- running it serverless or on the web with SQLite,
|
|
46
|
+
- streaming data through HTTP API (and enabling integration scenarios through it).
|
|
47
|
+
- defining event transformations and projections with WebAssembly,
|
|
48
|
+
- build-in read models based on the JSON capabilities of Postgres and SQLite.
|
|
49
|
+
|
|
50
|
+
### **Would it be a competitor to other stores?**
|
|
51
|
+
|
|
52
|
+
Probably not. For now, I'd like to have a safe playground to have fun and try out new ideas. Still, what I deliver, I expect to be safe to use on a small scale.
|
|
53
|
+
|
|
54
|
+
### **Why there's no license?**
|
|
55
|
+
|
|
56
|
+
Because I'm unsure when this will end, and I don't want to expose it as an MIT license from the beginning.
|
|
57
|
+
|
|
58
|
+
## Support
|
|
59
|
+
|
|
60
|
+
💖 If you'd like this initiative or want to use it potentially. Feel invited you **join** the group of my 👉 [Github Sponsors](https://github.com/sponsors/oskardudycz).
|
|
61
|
+
|
|
62
|
+
GitHub ⭐'s won't pay the bills, so any help is more than welcome!
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@event-driven-io/emmett",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Emmett - Event Sourcing made simple",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"setup": "cat .nvmrc | nvm install; nvm use",
|
|
7
|
+
"build": "tsup",
|
|
8
|
+
"build:ts": "tsc",
|
|
9
|
+
"build:ts:watch": "tsc --watch",
|
|
10
|
+
"start": "ts-node -r tsconfig-paths/register ./src/index.ts",
|
|
11
|
+
"lint": "npm run lint:eslint && npm run lint:prettier",
|
|
12
|
+
"lint:prettier": "prettier --check \"**/**/!(*.d).{ts,json,md}\"",
|
|
13
|
+
"lint:eslint": "eslint **/*.ts",
|
|
14
|
+
"fix": "run-s fix:eslint fix:prettier",
|
|
15
|
+
"fix:prettier": "prettier --write \"**/**/!(*.d).{ts,json,md}\"",
|
|
16
|
+
"fix:eslint": "eslint **/*.ts --fix",
|
|
17
|
+
"test": "run-s test:unit test:int test:e2e",
|
|
18
|
+
"test:unit": "jest unit --passWithNoTests --forceExit",
|
|
19
|
+
"test:int": "jest int --passWithNoTests --forceExit",
|
|
20
|
+
"test:e2e": "jest e2e --passWithNoTests --forceExit",
|
|
21
|
+
"test:watch": "jest test --passWithNoTests",
|
|
22
|
+
"test:unit:watch": "jest unit --passWithNoTests --forceExit --watch",
|
|
23
|
+
"test:int:watch": "jest int --passWithNoTests --forceExit --watch",
|
|
24
|
+
"test:e2e:watch": "jest e2e --passWithNoTests --forceExit --watch",
|
|
25
|
+
"docs:dev": "vitepress dev docs",
|
|
26
|
+
"docs:build": "vitepress build docs",
|
|
27
|
+
"docs:preview": "vitepress preview docs"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/event-driven-io/emmett.git"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"Event Sourcing"
|
|
35
|
+
],
|
|
36
|
+
"author": "Oskar Dudycz",
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/event-driven-io/emmett/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/event-driven-io/emmett#readme",
|
|
41
|
+
"main": "./dist/index.js",
|
|
42
|
+
"module": "./dist/index.mjs",
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"files": [
|
|
45
|
+
"dist"
|
|
46
|
+
],
|
|
47
|
+
"dependencies": {},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@faker-js/faker": "8.4.1",
|
|
50
|
+
"@types/jest": "29.5.0",
|
|
51
|
+
"@types/node": "20.11.17",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "6.21.0",
|
|
53
|
+
"@typescript-eslint/parser": "6.21.0",
|
|
54
|
+
"eslint": "8.56.0",
|
|
55
|
+
"eslint-config-prettier": "9.1.0",
|
|
56
|
+
"eslint-plugin-prettier": "5.1.3",
|
|
57
|
+
"jest": "29.7.0",
|
|
58
|
+
"npm-run-all": "4.1.5",
|
|
59
|
+
"prettier": "3.2.5",
|
|
60
|
+
"supertest": "6.3.4",
|
|
61
|
+
"ts-jest": "29.1.2",
|
|
62
|
+
"ts-node": "10.9.2",
|
|
63
|
+
"tsconfig-paths": "4.2.0",
|
|
64
|
+
"tsup": "8.0.2",
|
|
65
|
+
"typescript": "5.3.3",
|
|
66
|
+
"vitepress": "1.0.0-rc.42"
|
|
67
|
+
}
|
|
68
|
+
}
|