@volcanicminds/backend 3.0.0 → 3.1.0

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 (102) hide show
  1. package/README.md +129 -28
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +13 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api/auth/controller/auth.d.ts +1 -1
  6. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
  7. package/dist/lib/api/auth/controller/auth.js +90 -66
  8. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  9. package/dist/lib/api/auth/routes.d.ts +29 -0
  10. package/dist/lib/api/auth/routes.d.ts.map +1 -1
  11. package/dist/lib/api/auth/routes.js +10 -0
  12. package/dist/lib/api/auth/routes.js.map +1 -1
  13. package/dist/lib/api/token/controller/token.js +17 -17
  14. package/dist/lib/api/token/controller/token.js.map +1 -1
  15. package/dist/lib/api/users/controller/user.d.ts.map +1 -1
  16. package/dist/lib/api/users/controller/user.js +25 -19
  17. package/dist/lib/api/users/controller/user.js.map +1 -1
  18. package/dist/lib/api/users/routes.d.ts.map +1 -1
  19. package/dist/lib/api/users/routes.js.map +1 -1
  20. package/dist/lib/config/plugins.d.ts +17 -0
  21. package/dist/lib/config/plugins.d.ts.map +1 -1
  22. package/dist/lib/config/plugins.js +2 -2
  23. package/dist/lib/config/plugins.js.map +1 -1
  24. package/dist/lib/database/typeorm/embedded.d.ts +12 -0
  25. package/dist/lib/database/typeorm/embedded.d.ts.map +1 -0
  26. package/dist/lib/database/typeorm/embedded.js +92 -0
  27. package/dist/lib/database/typeorm/embedded.js.map +1 -0
  28. package/dist/lib/database/typeorm/entities/user.d.ts +1 -0
  29. package/dist/lib/database/typeorm/entities/user.d.ts.map +1 -1
  30. package/dist/lib/database/typeorm/entities/user.js.map +1 -1
  31. package/dist/lib/database/typeorm/loader/tenantManager.d.ts.map +1 -1
  32. package/dist/lib/database/typeorm/loader/tenantManager.js +4 -1
  33. package/dist/lib/database/typeorm/loader/tenantManager.js.map +1 -1
  34. package/dist/lib/database/typeorm/loader/userManager.d.ts.map +1 -1
  35. package/dist/lib/database/typeorm/loader/userManager.js +2 -1
  36. package/dist/lib/database/typeorm/loader/userManager.js.map +1 -1
  37. package/dist/lib/database/typeorm/query/operators.d.ts +10 -0
  38. package/dist/lib/database/typeorm/query/operators.d.ts.map +1 -0
  39. package/dist/lib/database/typeorm/query/operators.js +122 -0
  40. package/dist/lib/database/typeorm/query/operators.js.map +1 -0
  41. package/dist/lib/database/typeorm/query.d.ts +2 -0
  42. package/dist/lib/database/typeorm/query.d.ts.map +1 -1
  43. package/dist/lib/database/typeorm/query.js +29 -62
  44. package/dist/lib/database/typeorm/query.js.map +1 -1
  45. package/dist/lib/database/typeorm/util/crypto.d.ts.map +1 -1
  46. package/dist/lib/database/typeorm/util/crypto.js +50 -26
  47. package/dist/lib/database/typeorm/util/crypto.js.map +1 -1
  48. package/dist/lib/hooks/onRequest.d.ts.map +1 -1
  49. package/dist/lib/hooks/onRequest.js +15 -29
  50. package/dist/lib/hooks/onRequest.js.map +1 -1
  51. package/dist/lib/loader/router.d.ts +2 -0
  52. package/dist/lib/loader/router.d.ts.map +1 -1
  53. package/dist/lib/loader/router.js +7 -3
  54. package/dist/lib/loader/router.js.map +1 -1
  55. package/dist/lib/loader/tracking.d.ts.map +1 -1
  56. package/dist/lib/loader/tracking.js +6 -1
  57. package/dist/lib/loader/tracking.js.map +1 -1
  58. package/dist/lib/middleware/isAdmin.d.ts.map +1 -1
  59. package/dist/lib/middleware/isAdmin.js +2 -1
  60. package/dist/lib/middleware/isAdmin.js.map +1 -1
  61. package/dist/lib/middleware/isAuthenticated.d.ts.map +1 -1
  62. package/dist/lib/middleware/isAuthenticated.js +2 -1
  63. package/dist/lib/middleware/isAuthenticated.js.map +1 -1
  64. package/dist/lib/schemas/user.d.ts +17 -0
  65. package/dist/lib/schemas/user.d.ts.map +1 -1
  66. package/dist/lib/schemas/user.js +8 -1
  67. package/dist/lib/schemas/user.js.map +1 -1
  68. package/dist/lib/util/errors.d.ts.map +1 -1
  69. package/dist/lib/util/errors.js +3 -2
  70. package/dist/lib/util/errors.js.map +1 -1
  71. package/dist/lib/util/httpError.d.ts +8 -0
  72. package/dist/lib/util/httpError.d.ts.map +1 -0
  73. package/dist/lib/util/httpError.js +19 -0
  74. package/dist/lib/util/httpError.js.map +1 -0
  75. package/dist/typeorm.d.ts +3 -2
  76. package/dist/typeorm.d.ts.map +1 -1
  77. package/dist/typeorm.js +14 -2
  78. package/dist/typeorm.js.map +1 -1
  79. package/dist/types/global.d.ts +4 -1
  80. package/lib/api/auth/controller/auth.ts +113 -67
  81. package/lib/api/auth/routes.ts +17 -0
  82. package/lib/api/token/controller/token.ts +17 -17
  83. package/lib/api/users/controller/user.ts +32 -19
  84. package/lib/api/users/routes.ts +3 -0
  85. package/lib/config/plugins.ts +5 -2
  86. package/lib/database/typeorm/embedded.ts +173 -0
  87. package/lib/database/typeorm/entities/user.ts +2 -0
  88. package/lib/database/typeorm/loader/tenantManager.ts +8 -1
  89. package/lib/database/typeorm/loader/userManager.ts +6 -1
  90. package/lib/database/typeorm/query/operators.ts +187 -0
  91. package/lib/database/typeorm/query.ts +48 -73
  92. package/lib/database/typeorm/util/crypto.ts +89 -27
  93. package/lib/defaults/managers.ts +1 -1
  94. package/lib/hooks/onRequest.ts +17 -29
  95. package/lib/loader/router.ts +13 -4
  96. package/lib/loader/tracking.ts +10 -1
  97. package/lib/middleware/isAdmin.ts +3 -1
  98. package/lib/middleware/isAuthenticated.ts +4 -1
  99. package/lib/schemas/user.ts +17 -1
  100. package/lib/util/errors.ts +4 -2
  101. package/lib/util/httpError.ts +37 -0
  102. package/package.json +31 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "codename": "rome",
6
6
  "license": "MIT",
@@ -59,8 +59,18 @@
59
59
  "start": "tsx --env-file .env server.ts",
60
60
  "dev": "tsx watch --env-file .env server.ts",
61
61
  "test": "npm run test:core && npm run test:typeorm",
62
- "test:core": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha --import=tsx ./test/index.spec.ts -t 100000 --exit",
62
+ "test:core": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2231 NODE_ENV=memory BROWSER=false mocha --import=tsx ./test/index.spec.ts -t 100000 --exit",
63
63
  "test:typeorm": "cross-env NODE_ENV=memory MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/typeorm/**/*.spec.ts -t 20000 --exit",
64
+ "test:pglite": "cross-env NODE_ENV=memory MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/pglite/**/*.spec.ts -t 60000 --exit",
65
+ "test:perf": "cross-env PORT=2233 NODE_ENV=memory LOG_LEVEL=error LOG_FASTIFY=false MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/perf/**/*.spec.ts -t 120000 --exit",
66
+ "test:e2e:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2234 NODE_ENV=memory LOG_LEVEL=silent JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e/**/*.e2e.spec.ts -t 60000 --exit",
67
+ "test:e2e:mt:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2235 NODE_ENV=memory LOG_LEVEL=silent JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-mt/**/*.e2e.spec.ts -t 60000 --exit",
68
+ "test:e2e:cookie:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2236 NODE_ENV=memory LOG_LEVEL=silent AUTH_MODE=COOKIE COOKIE_SECRET=e2e-cookie-secret-please-change-32xyz JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-cookie/**/*.e2e.spec.ts -t 60000 --exit",
69
+ "test:e2e:norefresh:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2237 NODE_ENV=memory LOG_LEVEL=silent JWT_REFRESH=false JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-norefresh/**/*.e2e.spec.ts -t 60000 --exit",
70
+ "test:e2e:mfa:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2238 NODE_ENV=memory LOG_LEVEL=silent JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-mfa/**/*.e2e.spec.ts -t 60000 --exit",
71
+ "test:e2e:ratelimit:pglite": "cross-env AUTH_RATELIMIT_MAX=3 AUTH_RATELIMIT_WINDOW=60000 PORT=2239 NODE_ENV=memory LOG_LEVEL=silent JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-ratelimit/**/*.e2e.spec.ts -t 60000 --exit",
72
+ "test:e2e:fixture:pglite": "cross-env AUTH_RATELIMIT_MAX=100000 PORT=2240 NODE_ENV=memory LOG_LEVEL=silent JWT_SECRET=e2e-test-secret-please-change-32-chars MFA_DB_SECRET=unit-test-secret-please-change-32xyz mocha --import=tsx ./test/e2e-fixture/**/*.e2e.spec.ts -t 60000 --exit",
73
+ "test:lib": "cross-env NODE_ENV=memory mocha --import=tsx ./test/lib/**/*.spec.ts -t 20000 --exit",
64
74
  "test:full": "npm run test:core",
65
75
  "reset": "npm install && npm update && npm run build",
66
76
  "upgrade-deps": "npx npm-check-updates -u",
@@ -98,16 +108,28 @@
98
108
  "toad-scheduler": "^3.1.0"
99
109
  },
100
110
  "peerDependencies": {
111
+ "@electric-sql/pglite": "0.5.3",
112
+ "@electric-sql/pglite-pgvector": "^0.0.4",
101
113
  "bcrypt": "^6.0.0",
102
114
  "pg": "^8.13.0",
103
115
  "pluralize": "^8.0.0",
104
116
  "reflect-metadata": "^0.2.2",
105
- "typeorm": "^0.3.28"
117
+ "typeorm": "^0.3.28",
118
+ "typeorm-pglite": "^0.3.4"
106
119
  },
107
120
  "peerDependenciesMeta": {
108
121
  "typeorm": {
109
122
  "optional": true
110
123
  },
124
+ "typeorm-pglite": {
125
+ "optional": true
126
+ },
127
+ "@electric-sql/pglite": {
128
+ "optional": true
129
+ },
130
+ "@electric-sql/pglite-pgvector": {
131
+ "optional": true
132
+ },
111
133
  "bcrypt": {
112
134
  "optional": true
113
135
  },
@@ -122,6 +144,8 @@
122
144
  }
123
145
  },
124
146
  "devDependencies": {
147
+ "@electric-sql/pglite": "0.5.3",
148
+ "@electric-sql/pglite-pgvector": "^0.0.4",
125
149
  "@eslint/js": "^9.39.2",
126
150
  "@types/bcrypt": "^6.0.0",
127
151
  "@types/mocha": "^10.0.10",
@@ -129,20 +153,22 @@
129
153
  "@types/pg": "^8.11.10",
130
154
  "@types/pluralize": "^0.0.33",
131
155
  "@types/semver": "^7.7.1",
156
+ "autocannon": "^8.0.0",
132
157
  "bcrypt": "^6.0.0",
133
158
  "cross-env": "^10.1.0",
134
159
  "dependency-cruiser": "^18.0.0",
135
160
  "eslint": "^9.39.2",
136
161
  "expect": "^30.2.0",
137
162
  "globals": "^16.5.0",
138
- "mocha": "^11.7.5",
139
- "npm-upgrade": "^3.1.2",
163
+ "mocha": "^8.1.3",
164
+ "npm-upgrade": "^0.3.0",
140
165
  "pg": "^8.13.0",
141
166
  "pluralize": "^8.0.0",
142
167
  "reflect-metadata": "^0.2.2",
143
168
  "ts-node": "^10.9.2",
144
169
  "tsx": "^4.21.0",
145
170
  "typeorm": "^0.3.28",
171
+ "typeorm-pglite": "^0.3.4",
146
172
  "typescript": "^5.9.3",
147
173
  "typescript-eslint": "^8.50.0"
148
174
  },