@paralect/hive 0.1.49 → 0.1.50-alpha.2

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.
Files changed (189) hide show
  1. package/.hive/.babelrc +3 -0
  2. package/.hive/.cursor/commands/add-endpoint.md +262 -0
  3. package/.hive/.cursor/commands/add-handler.md +137 -0
  4. package/.hive/.cursor/commands/add-middleware.md +95 -0
  5. package/.hive/.cursor/commands/add-resource.md +71 -0
  6. package/.hive/.cursor/commands/add-scheduler.md +138 -0
  7. package/.hive/.cursor/commands/add-service.md +188 -0
  8. package/.hive/.cursor/skills/hive-auth/SKILL.md +134 -0
  9. package/.hive/.cursor/skills/hive-database/SKILL.md +103 -0
  10. package/.hive/.cursor/skills/hive-endpoint/SKILL.md +103 -0
  11. package/.hive/.cursor/skills/hive-handler/SKILL.md +88 -0
  12. package/.hive/.cursor/skills/hive-mapping/SKILL.md +85 -0
  13. package/.hive/.cursor/skills/hive-middleware/SKILL.md +104 -0
  14. package/.hive/.cursor/skills/hive-overview/SKILL.md +50 -0
  15. package/.hive/.cursor/skills/hive-scheduler/SKILL.md +94 -0
  16. package/.hive/.cursor/skills/hive-schema/SKILL.md +73 -0
  17. package/.hive/.cursor/skills/hive-service/SKILL.md +90 -0
  18. package/.hive/.dockerignore +1 -0
  19. package/.hive/Dockerfile +22 -0
  20. package/.hive/Dockerfile.dev +33 -0
  21. package/.hive/Dockerfile.prod +29 -0
  22. package/.hive/README.md +11 -0
  23. package/.hive/bin/deploy.sh +5 -0
  24. package/.hive/bin/start.sh +2 -0
  25. package/.hive/bootstrap-hive.js +118 -0
  26. package/.hive/deploy/api/Chart.yaml +6 -0
  27. package/.hive/deploy/api/staging.yaml +3 -0
  28. package/.hive/deploy/api/templates/deployment.yaml +44 -0
  29. package/.hive/deploy/api/templates/ingress.yaml +26 -0
  30. package/.hive/deploy/api/templates/service.yaml +14 -0
  31. package/.hive/deploy/script/Dockerfile +39 -0
  32. package/.hive/deploy/script/package-lock.json +1499 -0
  33. package/.hive/deploy/script/package.json +12 -0
  34. package/.hive/deploy/script/src/config.js +48 -0
  35. package/.hive/deploy/script/src/index.js +108 -0
  36. package/.hive/deploy/script/src/util.js +19 -0
  37. package/.hive/initial-data.json +176 -0
  38. package/.hive/package-lock.json +10242 -0
  39. package/.hive/package.json +98 -0
  40. package/.hive/ship_logo.png +0 -0
  41. package/.hive/src/app-config/app.js +3 -0
  42. package/.hive/src/app-config/assertEnv.js +15 -0
  43. package/.hive/src/app-config/index.js +62 -0
  44. package/.hive/src/app.js +69 -0
  45. package/.hive/src/assets/emails/components/header.mjml +13 -0
  46. package/.hive/src/assets/emails/dist/.gitkeep +0 -0
  47. package/.hive/src/assets/emails/signup-welcome.mjml +34 -0
  48. package/.hive/src/assets/emails/styles/index.mjml +77 -0
  49. package/.hive/src/autoMap/addHandlers.js +142 -0
  50. package/.hive/src/autoMap/getDependentFields.js +37 -0
  51. package/.hive/src/autoMap/mapSchema.js +99 -0
  52. package/.hive/src/autoMap/schemaMappings.js +13 -0
  53. package/.hive/src/autoMap/schemaMappings.json +3 -0
  54. package/.hive/src/bullMqBus.js +21 -0
  55. package/.hive/src/bullMqWrapper.js +23 -0
  56. package/.hive/src/db.js +52 -0
  57. package/.hive/src/emails/MyEmailComponent.jsx +14 -0
  58. package/.hive/src/emails/compiled/MyEmailComponent.js +18 -0
  59. package/.hive/src/emails/compiled/compiled/MyEmailComponent.js +18 -0
  60. package/.hive/src/helpers/db/ifUpdated.js +22 -0
  61. package/.hive/src/helpers/getMiddlewares.js +38 -0
  62. package/.hive/src/helpers/getResourceEndpoints.js +28 -0
  63. package/.hive/src/helpers/getResources.js +32 -0
  64. package/.hive/src/helpers/getSchemas.js +50 -0
  65. package/.hive/src/helpers/importHandlers.js +29 -0
  66. package/.hive/src/helpers/isZodArray.js +13 -0
  67. package/.hive/src/helpers/prettierFormat.js +8 -0
  68. package/.hive/src/helpers/schema/db.schema.js +9 -0
  69. package/.hive/src/helpers/schema/pagination.schema.js +14 -0
  70. package/.hive/src/ioEmitter.js +9 -0
  71. package/.hive/src/jsconfig.json +5 -0
  72. package/.hive/src/lib/node-mongo/.github/workflows/npm-publish.yml +32 -0
  73. package/.hive/src/lib/node-mongo/API.md +654 -0
  74. package/.hive/src/lib/node-mongo/CHANGELOG.md +98 -0
  75. package/.hive/src/lib/node-mongo/README.md +97 -0
  76. package/.hive/src/lib/node-mongo/package-lock.json +3682 -0
  77. package/.hive/src/lib/node-mongo/package.json +74 -0
  78. package/.hive/src/lib/node-mongo/src/index.js +64 -0
  79. package/.hive/src/lib/node-mongo/src/mongo-query-service.js +78 -0
  80. package/.hive/src/lib/node-mongo/src/mongo-service-error.js +15 -0
  81. package/.hive/src/lib/node-mongo/src/mongo-service.js +303 -0
  82. package/.hive/src/logger.js +43 -0
  83. package/.hive/src/middlewares/allowNoAuth.js +9 -0
  84. package/.hive/src/middlewares/attachUser.js +41 -0
  85. package/.hive/src/middlewares/global/extractUserTokens.js +15 -0
  86. package/.hive/src/middlewares/global/tryToAttachUser.js +33 -0
  87. package/.hive/src/middlewares/isAuthorized.js +18 -0
  88. package/.hive/src/middlewares/shouldExist.js +37 -0
  89. package/.hive/src/middlewares/shouldNotExist.js +19 -0
  90. package/.hive/src/middlewares/uploadFile.js +5 -0
  91. package/.hive/src/middlewares/validate.js +32 -0
  92. package/.hive/src/migrations/migration.js +8 -0
  93. package/.hive/src/migrations/migration.service.js +73 -0
  94. package/.hive/src/migrations/migrations/1.js +22 -0
  95. package/.hive/src/migrations/migrations-log/migration-log.schema.js +13 -0
  96. package/.hive/src/migrations/migrations-log/migration-log.service.js +50 -0
  97. package/.hive/src/migrations/migrations.schema.js +6 -0
  98. package/.hive/src/migrations/migrator.js +75 -0
  99. package/.hive/src/migrator.js +4 -0
  100. package/.hive/src/resources/_dev/endpoints/triggerSchedulerHandler.js +32 -0
  101. package/.hive/src/resources/health/endpoints/get.js +19 -0
  102. package/.hive/src/resources/schemaMappings/schemaMappings.schema.js +6 -0
  103. package/.hive/src/resources/tokens/methods/generateSecureToken.js +9 -0
  104. package/.hive/src/resources/tokens/methods/setToken.js +8 -0
  105. package/.hive/src/resources/tokens/methods/storeToken.js +35 -0
  106. package/.hive/src/resources/tokens/tokens.schema.js +11 -0
  107. package/.hive/src/resources/users/endpoints/getCurrentUser.js +14 -0
  108. package/.hive/src/resources/users/endpoints/getUserProfile.js +19 -0
  109. package/.hive/src/resources/users/handlers/test.js +1 -0
  110. package/.hive/src/resources/users/methods/ensureUserCreated.js +68 -0
  111. package/.hive/src/resources/users/users.schema.js +16 -0
  112. package/.hive/src/routes/index.js +172 -0
  113. package/.hive/src/routes/middlewares/attachCustomErrors.js +28 -0
  114. package/.hive/src/routes/middlewares/routeErrorHandler.js +27 -0
  115. package/.hive/src/scheduler/handlers/sendDailyReport.example.js +7 -0
  116. package/.hive/src/scheduler.js +32 -0
  117. package/.hive/src/security.util.js +38 -0
  118. package/.hive/src/services/emailService.js +15 -0
  119. package/.hive/src/services/globalTest.js +0 -0
  120. package/.hive/src/services/setCookie.js +21 -0
  121. package/.hive/src/socketIo.js +99 -0
  122. package/.hive/tsconfig.json +31 -0
  123. package/cli/helpers/docker.js +59 -0
  124. package/cli/helpers/envCheck.js +127 -0
  125. package/cli/helpers/findPort.js +32 -0
  126. package/cli/hive.js +91 -17
  127. package/package.json +1 -1
  128. package/starter/loader.mjs +40 -0
  129. package/starter/package-lock.json +3512 -262
  130. package/starter/package.json +7 -2
  131. package/starter/register.mjs +6 -0
  132. package/starter/src/app-config/index.js +3 -0
  133. package/starter/src/app.js +10 -14
  134. package/starter/src/autoMap/addHandlers.js +3 -3
  135. package/starter/src/autoMap/getDependentFields.js +1 -1
  136. package/starter/src/autoMap/mapSchema.js +2 -2
  137. package/starter/src/bullMqBus.js +1 -1
  138. package/starter/src/bullMqWrapper.js +1 -1
  139. package/starter/src/db.js +12 -11
  140. package/starter/src/helpers/esm.js +56 -0
  141. package/starter/src/helpers/getMiddlewares.js +3 -0
  142. package/starter/src/helpers/getResourceEndpoints.js +3 -0
  143. package/starter/src/helpers/getResources.js +3 -0
  144. package/starter/src/helpers/getSchemas.js +3 -0
  145. package/starter/src/helpers/importHandlers.js +11 -20
  146. package/starter/src/ioEmitter.js +1 -1
  147. package/starter/src/logger.js +1 -1
  148. package/starter/src/middlewares/attachUser.js +2 -2
  149. package/starter/src/middlewares/global/tryToAttachUser.js +1 -1
  150. package/starter/src/middlewares/shouldExist.js +1 -1
  151. package/starter/src/middlewares/shouldNotExist.js +1 -1
  152. package/starter/src/migrations/migration.service.js +4 -1
  153. package/starter/src/migrations/migrations-log/migration-log.schema.js +1 -1
  154. package/starter/src/migrations/migrations-log/migration-log.service.js +1 -1
  155. package/starter/src/migrations/migrations.schema.js +1 -1
  156. package/starter/src/migrations/migrator.js +1 -1
  157. package/starter/src/migrator.js +2 -3
  158. package/starter/src/resources/schemaMappings/schemaMappings.schema.js +1 -1
  159. package/starter/src/resources/tokens/methods/setToken.js +1 -1
  160. package/starter/src/resources/tokens/methods/storeToken.js +2 -2
  161. package/starter/src/resources/tokens/tokens.schema.js +1 -1
  162. package/starter/src/resources/users/endpoints/getCurrentUser.js +1 -1
  163. package/starter/src/resources/users/endpoints/getUserProfile.js +1 -1
  164. package/starter/src/resources/users/methods/ensureUserCreated.js +1 -1
  165. package/starter/src/resources/users/users.schema.js +1 -1
  166. package/starter/src/routes/index.js +8 -8
  167. package/starter/src/routes/middlewares/routeErrorHandler.js +1 -1
  168. package/starter/src/scheduler.js +10 -7
  169. package/starter/src/services/emailService.js +1 -1
  170. package/starter/src/services/setCookie.js +2 -2
  171. package/starter/src/socketIo.js +3 -3
  172. package/test-app/.cursor/commands/add-endpoint.md +262 -0
  173. package/test-app/.cursor/commands/add-handler.md +137 -0
  174. package/test-app/.cursor/commands/add-middleware.md +95 -0
  175. package/test-app/.cursor/commands/add-resource.md +71 -0
  176. package/test-app/.cursor/commands/add-scheduler.md +138 -0
  177. package/test-app/.cursor/commands/add-service.md +188 -0
  178. package/test-app/.cursor/skills/hive-auth/SKILL.md +134 -0
  179. package/test-app/.cursor/skills/hive-database/SKILL.md +103 -0
  180. package/test-app/.cursor/skills/hive-endpoint/SKILL.md +103 -0
  181. package/test-app/.cursor/skills/hive-handler/SKILL.md +88 -0
  182. package/test-app/.cursor/skills/hive-mapping/SKILL.md +85 -0
  183. package/test-app/.cursor/skills/hive-middleware/SKILL.md +104 -0
  184. package/test-app/.cursor/skills/hive-overview/SKILL.md +50 -0
  185. package/test-app/.cursor/skills/hive-scheduler/SKILL.md +94 -0
  186. package/test-app/.cursor/skills/hive-schema/SKILL.md +73 -0
  187. package/test-app/.cursor/skills/hive-service/SKILL.md +90 -0
  188. package/test-app/package-lock.json +462 -0
  189. package/test-app/package.json +21 -0
@@ -0,0 +1,98 @@
1
+ ## v2.1.0 (2020-10-15)
2
+
3
+ ### Features
4
+
5
+ #### Manager
6
+
7
+ [createService](API.md#createservice)
8
+
9
+ - Add [emitter](API.md#createservice) option.
10
+
11
+ ## v2.0.0 (2020-09-29)
12
+
13
+ - Update dependencies.
14
+
15
+ ### Breaking Changes
16
+
17
+ #### [Manager](API.md#manager)
18
+
19
+ [createQueryService](API.md#createqueryservice)
20
+
21
+ - Rename `validateSchema` option to `validate`.
22
+ - Change `addCreatedOnField` default to `true`.
23
+ - Change `addUpdatedOnField` default to `true`.
24
+
25
+ [createService](API.md#createservice)
26
+
27
+ - Rename `validateSchema` option to `validate`.
28
+ - Change `addCreatedOnField` default to `true`.
29
+ - Change `addUpdatedOnField` default to `true`.
30
+
31
+ #### [Query Service](API.md#query-service)
32
+
33
+ - Remove `generateId` method.
34
+ - Remove `expectDocument` method.
35
+
36
+ #### [Service](API.md#service)
37
+
38
+ - Remove `update` method. Use [updateOne](API.md#updateone) or [updateMany](API.md#updatemany).
39
+ - Remove `ensureIndex`. Use [atomic.createIndex](API.md#atomiccreateindex).
40
+ - Remove `createOrUpdate`. Use [create](API.md#create) or [updateOne](API.md#updateone) or [updateMany](API.md#updatemany).
41
+ - Remove `findOneAndUpdate`. Use [findOne](API.md#findone) and [updateOne](API.md#updateone).
42
+
43
+ ### Features
44
+
45
+ #### Manager
46
+
47
+ [createQueryService](API.md#createqueryservice)
48
+
49
+ - Add `useStringId` option.
50
+
51
+ [createService](API.md#createservice)
52
+
53
+ - Add `useStringId` option.
54
+
55
+ #### [Query Service](API.md#query-service)
56
+
57
+ - Add more monk's methods. [See full list](API.md#query-service)
58
+
59
+ #### [Service](API.md#service)
60
+
61
+ - Add [generateId](API.md#generateid) method.
62
+ - Add [updateOne](API.md#updateone) method.
63
+ - Add [updateMany](API.md#updatemany) method.
64
+ - Add [performTransaction](API.md#performtransaction) method.
65
+ - Add more monk's methods in `atomic` namespace. [See full list](API.md#service)
66
+
67
+ ## v1.1.0 (2019-06-25)
68
+
69
+ - Update dependencies.
70
+ - Fix required version of the Node.js.
71
+
72
+ ### Breaking Changes
73
+
74
+ - Now `update` function will work via [set](https://docs.mongodb.com/manual/reference/operator/update/set/) operator. It means the new doc will be the result of merge of the old doc and the provided one.
75
+
76
+ ## v1.0.0 (2018-05-23)
77
+
78
+ - Update dependencies.
79
+ - Add tests.
80
+ - Fix required version of the Node.js.
81
+
82
+ ### Breaking Changes
83
+
84
+ - Now, by default, we do not add the fields `createdOn` and` updatedOn` automatically to the model. If you want to save the current behavior, add the appropriate `addCreatedOnField` and` addUpdatedOnField` options to the service definitions.
85
+
86
+ ## v0.3.1 (2017-12-16)
87
+
88
+ - Stop using deprecated method `ensureIndex` of the `monk`.
89
+
90
+ ## v0.3.0 (2017-10-24)
91
+
92
+ - Add ability to create custom methods for service and query service.
93
+ - Add tests.
94
+
95
+ ## v0.2.0 (2017-10-12)
96
+
97
+ - Add support of the [joi](https://github.com/hapijs/joi) for validating data schema.
98
+ - Add tests for validating of the schema.
@@ -0,0 +1,97 @@
1
+ # Node Mongo
2
+
3
+ [![npm version](https://badge.fury.io/js/%40paralect%2Fnode-mongo.svg)](https://badge.fury.io/js/%40paralect%2Fnode-mongo)
4
+
5
+ Node Mongo is reactive extension to MongoDB API. It provides few usability improvements to the [monk](https://github.com/Automattic/monk) API.
6
+
7
+ ## Features
8
+
9
+ - ️️**Reactive**. Fires events as document stored, updated or deleted from database
10
+ - **Paging**. Implements high level paging API
11
+ - **Schema validation**. Validates your data before save
12
+
13
+ ## Installation
14
+
15
+ ```
16
+ npm i @paralect/node-mongo
17
+ ```
18
+
19
+ ## Documentation
20
+
21
+ [API Reference](API.md).
22
+
23
+ ## Usage
24
+
25
+ ### Connect to MongoDB
26
+
27
+ ```javascript
28
+ const connectionString = "mongodb://localhost:27017/home-db";
29
+ const db = require("@paralect/node-mongo").connect(connectionString);
30
+ ```
31
+
32
+ ### CRUD Operations
33
+
34
+ ```javascript
35
+ // create a service to work with specific database collection
36
+ const userService = db.createService("users");
37
+
38
+ // create documents
39
+ const users = await userService.create([{ name: "Alex" }, { name: "Bob" }]);
40
+
41
+ // find one document
42
+ const user = await userService.findOne({ name: "Bob" });
43
+
44
+ // find many documents with pagination
45
+ const { results, pagesCount, count } = await userService.find(
46
+ { name: "Bob" },
47
+ { page: 1, perPage: 30 }
48
+ );
49
+
50
+ // update document
51
+ const updatedUser = await userService.updateOne({ _id: "1" }, (doc) => ({
52
+ ...doc,
53
+ name: "Alex",
54
+ }));
55
+
56
+ // remove document
57
+ const removedUser = await userService.remove({ _id: "1" });
58
+ ```
59
+
60
+ ### Event handlers
61
+
62
+ ```js
63
+ const userService = db.createService("users");
64
+
65
+ userService.on("created", ({ doc }) => {});
66
+
67
+ userService.on("updated", ({ doc, prevDoc }) => {});
68
+
69
+ userService.onPropertiesUpdated(["email"], ({ doc, prevDoc }) => {});
70
+
71
+ userService.on("removed", ({ doc }) => {});
72
+ ```
73
+
74
+ ### Schema validation
75
+
76
+ ```javascript
77
+ const Joi = require("Joi");
78
+
79
+ const userSchema = Joi.object({
80
+ _id: Joi.string(),
81
+ createdOn: Joi.date(),
82
+ name: Joi.string(),
83
+ status: Joi.string().valid("active", "inactive"),
84
+ });
85
+
86
+ function validate(obj) {
87
+ return userSchema.validate(obj);
88
+ }
89
+
90
+ const userService = db.createService("users", { validate });
91
+ ```
92
+
93
+ ## Change Log
94
+
95
+ This project adheres to [Semantic Versioning](http://semver.org/).
96
+
97
+ Every release is documented on the Github [Releases](https://github.com/paralect/node-mongo/releases) page.