@paralect/hive 0.1.50-alpha.3 → 0.1.50
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/.claude/settings.local.json +13 -0
- package/cli/helpers/execCommand.js +10 -10
- package/cli/helpers/isProjectInit.js +3 -3
- package/cli/helpers/mergeDirs.js +1 -1
- package/cli/hive.js +105 -105
- package/{test-app → framework}/.cursor/commands/add-service.md +6 -6
- package/{test-app → framework}/.cursor/skills/hive-overview/SKILL.md +1 -1
- package/{test-app → framework}/.cursor/skills/hive-service/SKILL.md +2 -2
- package/framework/bin/start.sh +2 -0
- package/{.hive/bootstrap-hive.js → framework/bootstrap-hive.ts} +4 -4
- package/{.hive → framework}/package-lock.json +212 -156
- package/framework/package.json +42 -0
- package/{.hive/src/app.js → framework/src/app.ts} +1 -1
- package/{.hive/src/bullMqBus.js → framework/src/bullMqBus.ts} +1 -1
- package/{.hive/src/bullMqWrapper.js → framework/src/bullMqWrapper.ts} +1 -1
- package/{.hive/src/app-config/index.js → framework/src/config/index.ts} +7 -7
- package/{.hive/src/db.js → framework/src/db.ts} +21 -6
- package/framework/src/endpoint.ts +132 -0
- package/framework/src/helpers/generateDbTypes.ts +47 -0
- package/{.hive/src/helpers/getMiddlewares.js → framework/src/helpers/getMiddlewares.ts} +1 -1
- package/{.hive/src/helpers/getResourceEndpoints.js → framework/src/helpers/getResourceEndpoints.ts} +8 -8
- package/{.hive/src/helpers/getResources.js → framework/src/helpers/getResources.ts} +1 -1
- package/{.hive/src/helpers/getSchemas.js → framework/src/helpers/getSchemas.ts} +13 -13
- package/framework/src/index.ts +3 -0
- package/{.hive/src/ioEmitter.js → framework/src/ioEmitter.ts} +1 -1
- package/{.hive/src/lib/node-mongo/src/mongo-query-service.js → framework/src/lib/node-mongo/src/mongo-query-service.ts} +18 -7
- package/{.hive/src/lib/node-mongo/src/mongo-service.js → framework/src/lib/node-mongo/src/mongo-service.ts} +17 -9
- package/{starter/src/logger.js → framework/src/logger.ts} +4 -3
- package/{.hive/src/migrations/migrations-log/migration-log.schema.js → framework/src/migrations/migrations-log/migration-log.schema.ts} +1 -1
- package/{.hive/src/migrations/migrations-log/migration-log.service.js → framework/src/migrations/migrations-log/migration-log.service.ts} +1 -1
- package/{.hive/src/migrations/migrations.schema.js → framework/src/migrations/migrations.schema.ts} +1 -1
- package/{.hive/src/resources/_dev/endpoints/triggerSchedulerHandler.js → framework/src/resources/_dev/endpoints/triggerSchedulerHandler.ts} +2 -1
- package/framework/src/resources/health/endpoints/get.ts +14 -0
- package/{.hive/src/resources/schemaMappings/schemaMappings.schema.js → framework/src/resources/schemaMappings/schemaMappings.schema.ts} +1 -1
- package/{.hive/src/routes/index.js → framework/src/routes/index.ts} +23 -27
- package/framework/src/schema.ts +3 -0
- package/{.hive/src/services/emailService.js → framework/src/services/emailService.ts} +1 -1
- package/{.hive/src/socketIo.js → framework/src/socketIo.ts} +1 -1
- package/{.hive → framework}/tsconfig.json +17 -13
- package/package.json +43 -51
- package/starter/hive/autoMap/schemaMappings.json +1 -0
- package/starter/hive/config/.env.example +11 -0
- package/starter/hive/config/app.ts +19 -0
- package/{.hive/src/services/setCookie.js → starter/hive/helpers/setCookie.ts} +1 -2
- package/starter/hive/middlewares/_global.ts +9 -0
- package/{.hive/src/middlewares/attachUser.js → starter/hive/middlewares/attachUser.ts} +2 -2
- package/{.hive/src/middlewares/shouldExist.js → starter/hive/middlewares/shouldExist.ts} +1 -1
- package/{.hive/src/middlewares/shouldNotExist.js → starter/hive/middlewares/shouldNotExist.ts} +1 -1
- package/starter/hive/resources/files/endpoints/upload.ts +25 -0
- package/starter/hive/resources/files/files.schema.ts +20 -0
- package/{.hive/src/resources/tokens/methods/storeToken.js → starter/hive/resources/tokens/methods/storeToken.ts} +3 -3
- package/{.hive/src/resources/tokens/tokens.schema.js → starter/hive/resources/tokens/tokens.schema.ts} +1 -2
- package/starter/hive/resources/users/endpoints/getCurrentUser.ts +12 -0
- package/starter/hive/resources/users/endpoints/getUserProfile.ts +17 -0
- package/{.hive/src/resources/users/users.schema.js → starter/hive/resources/users/users.schema.ts} +1 -2
- package/starter/hive/services/cloudStorage.ts +102 -0
- package/starter/package.json +9 -98
- package/starter/tsconfig.json +16 -20
- package/.cursor/commands/deslop.md +0 -12
- package/.hive/.cursor/commands/add-service.md +0 -188
- package/.hive/.cursor/skills/hive-overview/SKILL.md +0 -50
- package/.hive/.cursor/skills/hive-service/SKILL.md +0 -90
- package/.hive/bin/start.sh +0 -2
- package/.hive/package.json +0 -98
- package/.hive/src/logger.js +0 -43
- package/.hive/src/middlewares/global/tryToAttachUser.js +0 -33
- package/.hive/src/resources/health/endpoints/get.js +0 -19
- package/.hive/src/resources/tokens/methods/setToken.js +0 -8
- package/.hive/src/resources/users/endpoints/getCurrentUser.js +0 -14
- package/.hive/src/resources/users/endpoints/getUserProfile.js +0 -19
- package/.hive/src/resources/users/methods/ensureUserCreated.js +0 -68
- package/.hive/src/security.util.js +0 -38
- package/.hive/src/services/globalTest.js +0 -0
- package/cli/helpers/docker.js +0 -59
- package/cli/helpers/envCheck.js +0 -127
- package/cli/helpers/findPort.js +0 -32
- package/starter/.babelrc +0 -6
- package/starter/.cursor/commands/add-endpoint.md +0 -262
- package/starter/.cursor/commands/add-handler.md +0 -137
- package/starter/.cursor/commands/add-middleware.md +0 -95
- package/starter/.cursor/commands/add-resource.md +0 -71
- package/starter/.cursor/commands/add-scheduler.md +0 -138
- package/starter/.cursor/commands/add-service.md +0 -188
- package/starter/.cursor/skills/hive-auth/SKILL.md +0 -134
- package/starter/.cursor/skills/hive-database/SKILL.md +0 -103
- package/starter/.cursor/skills/hive-endpoint/SKILL.md +0 -103
- package/starter/.cursor/skills/hive-handler/SKILL.md +0 -88
- package/starter/.cursor/skills/hive-mapping/SKILL.md +0 -85
- package/starter/.cursor/skills/hive-middleware/SKILL.md +0 -104
- package/starter/.cursor/skills/hive-overview/SKILL.md +0 -50
- package/starter/.cursor/skills/hive-scheduler/SKILL.md +0 -94
- package/starter/.cursor/skills/hive-schema/SKILL.md +0 -73
- package/starter/.cursor/skills/hive-service/SKILL.md +0 -90
- package/starter/.dockerignore +0 -1
- package/starter/Dockerfile +0 -22
- package/starter/Dockerfile.dev +0 -33
- package/starter/Dockerfile.prod +0 -29
- package/starter/README.md +0 -11
- package/starter/bin/deploy.sh +0 -5
- package/starter/bin/start.sh +0 -2
- package/starter/bootstrap-hive.js +0 -118
- package/starter/deploy/api/Chart.yaml +0 -6
- package/starter/deploy/api/staging.yaml +0 -3
- package/starter/deploy/api/templates/deployment.yaml +0 -44
- package/starter/deploy/api/templates/ingress.yaml +0 -26
- package/starter/deploy/api/templates/service.yaml +0 -14
- package/starter/deploy/script/Dockerfile +0 -39
- package/starter/deploy/script/package-lock.json +0 -1499
- package/starter/deploy/script/package.json +0 -12
- package/starter/deploy/script/src/config.js +0 -48
- package/starter/deploy/script/src/index.js +0 -108
- package/starter/deploy/script/src/util.js +0 -19
- package/starter/initial-data.json +0 -176
- package/starter/loader.mjs +0 -40
- package/starter/package-lock.json +0 -13492
- package/starter/register.mjs +0 -6
- package/starter/ship_logo.png +0 -0
- package/starter/src/app-config/app.js +0 -3
- package/starter/src/app-config/assertEnv.js +0 -15
- package/starter/src/app-config/index.js +0 -65
- package/starter/src/app.js +0 -65
- package/starter/src/assets/emails/components/header.mjml +0 -13
- package/starter/src/assets/emails/dist/.gitkeep +0 -0
- package/starter/src/assets/emails/signup-welcome.mjml +0 -34
- package/starter/src/assets/emails/styles/index.mjml +0 -77
- package/starter/src/autoMap/addHandlers.js +0 -142
- package/starter/src/autoMap/getDependentFields.js +0 -37
- package/starter/src/autoMap/mapSchema.js +0 -99
- package/starter/src/autoMap/schemaMappings.js +0 -13
- package/starter/src/autoMap/schemaMappings.json +0 -3
- package/starter/src/bullMqBus.js +0 -21
- package/starter/src/bullMqWrapper.js +0 -23
- package/starter/src/db.js +0 -53
- package/starter/src/emails/MyEmailComponent.jsx +0 -14
- package/starter/src/emails/compiled/MyEmailComponent.js +0 -6
- package/starter/src/emails/compiled/compiled/MyEmailComponent.js +0 -6
- package/starter/src/emails/compiled/compiled/compiled/MyEmailComponent.js +0 -6
- package/starter/src/emails/compiled/compiled/compiled/compiled/MyEmailComponent.js +0 -6
- package/starter/src/helpers/db/ifUpdated.js +0 -22
- package/starter/src/helpers/esm.js +0 -56
- package/starter/src/helpers/getMiddlewares.js +0 -41
- package/starter/src/helpers/getResourceEndpoints.js +0 -31
- package/starter/src/helpers/getResources.js +0 -35
- package/starter/src/helpers/getSchemas.js +0 -53
- package/starter/src/helpers/importHandlers.js +0 -20
- package/starter/src/helpers/isZodArray.js +0 -13
- package/starter/src/helpers/prettierFormat.js +0 -8
- package/starter/src/helpers/schema/db.schema.js +0 -9
- package/starter/src/helpers/schema/pagination.schema.js +0 -14
- package/starter/src/ioEmitter.js +0 -9
- package/starter/src/jsconfig.json +0 -5
- package/starter/src/lib/node-mongo/.github/workflows/npm-publish.yml +0 -32
- package/starter/src/lib/node-mongo/API.md +0 -654
- package/starter/src/lib/node-mongo/CHANGELOG.md +0 -98
- package/starter/src/lib/node-mongo/README.md +0 -97
- package/starter/src/lib/node-mongo/package-lock.json +0 -3682
- package/starter/src/lib/node-mongo/package.json +0 -74
- package/starter/src/lib/node-mongo/src/index.js +0 -64
- package/starter/src/lib/node-mongo/src/mongo-query-service.js +0 -78
- package/starter/src/lib/node-mongo/src/mongo-service-error.js +0 -15
- package/starter/src/lib/node-mongo/src/mongo-service.js +0 -303
- package/starter/src/middlewares/attachUser.js +0 -41
- package/starter/src/middlewares/global/extractUserTokens.js +0 -15
- package/starter/src/middlewares/global/tryToAttachUser.js +0 -33
- package/starter/src/middlewares/isAuthorized.js +0 -18
- package/starter/src/middlewares/shouldExist.js +0 -37
- package/starter/src/middlewares/shouldNotExist.js +0 -19
- package/starter/src/middlewares/uploadFile.js +0 -5
- package/starter/src/middlewares/validate.js +0 -32
- package/starter/src/migrations/migration.js +0 -8
- package/starter/src/migrations/migration.service.js +0 -76
- package/starter/src/migrations/migrations/1.js +0 -22
- package/starter/src/migrations/migrations-log/migration-log.schema.js +0 -13
- package/starter/src/migrations/migrations-log/migration-log.service.js +0 -50
- package/starter/src/migrations/migrations.schema.js +0 -6
- package/starter/src/migrations/migrator.js +0 -75
- package/starter/src/migrator.js +0 -3
- package/starter/src/resources/_dev/endpoints/triggerSchedulerHandler.js +0 -32
- package/starter/src/resources/health/endpoints/get.js +0 -19
- package/starter/src/resources/schemaMappings/schemaMappings.schema.js +0 -6
- package/starter/src/resources/tokens/methods/generateSecureToken.js +0 -9
- package/starter/src/resources/tokens/methods/setToken.js +0 -8
- package/starter/src/resources/tokens/methods/storeToken.js +0 -35
- package/starter/src/resources/tokens/tokens.schema.js +0 -11
- package/starter/src/resources/users/endpoints/getCurrentUser.js +0 -14
- package/starter/src/resources/users/endpoints/getUserProfile.js +0 -19
- package/starter/src/resources/users/handlers/test.js +0 -1
- package/starter/src/resources/users/methods/ensureUserCreated.js +0 -68
- package/starter/src/resources/users/users.schema.js +0 -16
- package/starter/src/routes/index.js +0 -172
- package/starter/src/routes/middlewares/attachCustomErrors.js +0 -28
- package/starter/src/routes/middlewares/routeErrorHandler.js +0 -27
- package/starter/src/scheduler.js +0 -35
- package/starter/src/security.util.js +0 -38
- package/starter/src/services/emailService.js +0 -15
- package/starter/src/services/globalTest.js +0 -0
- package/starter/src/services/setCookie.js +0 -21
- package/starter/src/socketIo.js +0 -99
- package/test-app/.cursor/commands/add-endpoint.md +0 -262
- package/test-app/.cursor/commands/add-handler.md +0 -137
- package/test-app/.cursor/commands/add-middleware.md +0 -95
- package/test-app/.cursor/commands/add-resource.md +0 -71
- package/test-app/.cursor/commands/add-scheduler.md +0 -138
- package/test-app/.cursor/skills/hive-auth/SKILL.md +0 -134
- package/test-app/.cursor/skills/hive-database/SKILL.md +0 -103
- package/test-app/.cursor/skills/hive-endpoint/SKILL.md +0 -103
- package/test-app/.cursor/skills/hive-handler/SKILL.md +0 -88
- package/test-app/.cursor/skills/hive-mapping/SKILL.md +0 -85
- package/test-app/.cursor/skills/hive-middleware/SKILL.md +0 -104
- package/test-app/.cursor/skills/hive-scheduler/SKILL.md +0 -94
- package/test-app/.cursor/skills/hive-schema/SKILL.md +0 -73
- package/test-app/package-lock.json +0 -462
- package/test-app/package.json +0 -25
- package/test-app/src/resources/tasks/tasks.schema.js +0 -2
- /package/{.hive → framework}/.babelrc +0 -0
- /package/{.hive → framework}/.cursor/commands/add-endpoint.md +0 -0
- /package/{.hive → framework}/.cursor/commands/add-handler.md +0 -0
- /package/{.hive → framework}/.cursor/commands/add-middleware.md +0 -0
- /package/{.hive → framework}/.cursor/commands/add-resource.md +0 -0
- /package/{.hive → framework}/.cursor/commands/add-scheduler.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-auth/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-database/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-endpoint/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-handler/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-mapping/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-middleware/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-scheduler/SKILL.md +0 -0
- /package/{.hive → framework}/.cursor/skills/hive-schema/SKILL.md +0 -0
- /package/{.hive → framework}/.dockerignore +0 -0
- /package/{.hive → framework}/Dockerfile +0 -0
- /package/{.hive → framework}/Dockerfile.dev +0 -0
- /package/{.hive → framework}/Dockerfile.prod +0 -0
- /package/{.hive → framework}/README.md +0 -0
- /package/{.hive → framework}/bin/deploy.sh +0 -0
- /package/{.hive → framework}/deploy/api/Chart.yaml +0 -0
- /package/{.hive → framework}/deploy/api/staging.yaml +0 -0
- /package/{.hive → framework}/deploy/api/templates/deployment.yaml +0 -0
- /package/{.hive → framework}/deploy/api/templates/ingress.yaml +0 -0
- /package/{.hive → framework}/deploy/api/templates/service.yaml +0 -0
- /package/{.hive → framework}/deploy/script/Dockerfile +0 -0
- /package/{.hive → framework}/deploy/script/package-lock.json +0 -0
- /package/{.hive → framework}/deploy/script/package.json +0 -0
- /package/{.hive/deploy/script/src/config.js → framework/deploy/script/src/config.ts} +0 -0
- /package/{.hive/deploy/script/src/index.js → framework/deploy/script/src/index.ts} +0 -0
- /package/{.hive/deploy/script/src/util.js → framework/deploy/script/src/util.ts} +0 -0
- /package/{.hive → framework}/initial-data.json +0 -0
- /package/{.hive → framework}/ship_logo.png +0 -0
- /package/{.hive → framework}/src/assets/emails/components/header.mjml +0 -0
- /package/{.hive → framework}/src/assets/emails/dist/.gitkeep +0 -0
- /package/{.hive → framework}/src/assets/emails/signup-welcome.mjml +0 -0
- /package/{.hive → framework}/src/assets/emails/styles/index.mjml +0 -0
- /package/{.hive/src/autoMap/addHandlers.js → framework/src/autoMap/addHandlers.ts} +0 -0
- /package/{.hive/src/autoMap/getDependentFields.js → framework/src/autoMap/getDependentFields.ts} +0 -0
- /package/{.hive/src/autoMap/mapSchema.js → framework/src/autoMap/mapSchema.ts} +0 -0
- /package/{.hive → framework}/src/autoMap/schemaMappings.json +0 -0
- /package/{.hive/src/autoMap/schemaMappings.js → framework/src/autoMap/schemaMappings.ts} +0 -0
- /package/{.hive/src/helpers/schema/db.schema.js → framework/src/common/schema/db.schema.ts} +0 -0
- /package/{.hive/src/helpers/schema/pagination.schema.js → framework/src/common/schema/pagination.schema.ts} +0 -0
- /package/{.hive/src/app-config/app.js → framework/src/config/app.ts} +0 -0
- /package/{.hive/src/app-config/assertEnv.js → framework/src/config/assertEnv.ts} +0 -0
- /package/{.hive/src/emails/MyEmailComponent.jsx → framework/src/emails/MyEmailComponent.tsx} +0 -0
- /package/{.hive/src/emails/compiled/MyEmailComponent.js → framework/src/emails/compiled/MyEmailComponent.ts} +0 -0
- /package/{.hive/src/emails/compiled/compiled/MyEmailComponent.js → framework/src/emails/compiled/compiled/MyEmailComponent.ts} +0 -0
- /package/{.hive/src/helpers/db/ifUpdated.js → framework/src/helpers/db/ifUpdated.ts} +0 -0
- /package/{.hive/src/helpers/importHandlers.js → framework/src/helpers/importHandlers.ts} +0 -0
- /package/{.hive/src/helpers/isZodArray.js → framework/src/helpers/isZodArray.ts} +0 -0
- /package/{.hive/src/helpers/prettierFormat.js → framework/src/helpers/prettierFormat.ts} +0 -0
- /package/{.hive → framework}/src/jsconfig.json +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/.github/workflows/npm-publish.yml +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/API.md +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/CHANGELOG.md +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/README.md +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/package-lock.json +0 -0
- /package/{.hive → framework}/src/lib/node-mongo/package.json +0 -0
- /package/{.hive/src/lib/node-mongo/src/index.js → framework/src/lib/node-mongo/src/index.ts} +0 -0
- /package/{.hive/src/lib/node-mongo/src/mongo-service-error.js → framework/src/lib/node-mongo/src/mongo-service-error.ts} +0 -0
- /package/{.hive/src/middlewares/allowNoAuth.js → framework/src/middlewares/allowNoAuth.ts} +0 -0
- /package/{.hive/src/middlewares/global/extractUserTokens.js → framework/src/middlewares/global/extractUserTokens.ts} +0 -0
- /package/{.hive/src/middlewares/validate.js → framework/src/middlewares/validate.ts} +0 -0
- /package/{.hive/src/migrations/migration.service.js → framework/src/migrations/migration.service.ts} +0 -0
- /package/{.hive/src/migrations/migration.js → framework/src/migrations/migration.ts} +0 -0
- /package/{.hive/src/migrations/migrations/1.js → framework/src/migrations/migrations/1.ts} +0 -0
- /package/{.hive/src/migrations/migrator.js → framework/src/migrations/migrator.ts} +0 -0
- /package/{.hive/src/migrator.js → framework/src/migrator.ts} +0 -0
- /package/{.hive/src/routes/middlewares/attachCustomErrors.js → framework/src/routes/middlewares/attachCustomErrors.ts} +0 -0
- /package/{.hive/src/routes/middlewares/routeErrorHandler.js → framework/src/routes/middlewares/routeErrorHandler.ts} +0 -0
- /package/{.hive/src/scheduler/handlers/sendDailyReport.example.js → framework/src/scheduler/handlers/sendDailyReport.example.ts} +0 -0
- /package/{.hive/src/scheduler.js → framework/src/scheduler.ts} +0 -0
- /package/starter/{src/middlewares/allowNoAuth.js → hive/middlewares/allowNoAuth.ts} +0 -0
- /package/{.hive/src/middlewares/isAuthorized.js → starter/hive/middlewares/isAuthorized.ts} +0 -0
- /package/{.hive/src/middlewares/uploadFile.js → starter/hive/middlewares/uploadFile.ts} +0 -0
- /package/{.hive/src/resources/tokens/methods/generateSecureToken.js → starter/hive/resources/tokens/methods/generateSecureToken.ts} +0 -0
- /package/{.hive/src/resources/users/handlers/test.js → starter/hive/resources/users/handlers/test.ts} +0 -0
- /package/starter/{src/scheduler/handlers/sendDailyReport.example.js → hive/scheduler/handlers/dailyExample.ts} +0 -0
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const formatError = (zodError) => {
|
|
3
|
-
const errors = {};
|
|
4
|
-
|
|
5
|
-
zodError.issues.forEach((error) => {
|
|
6
|
-
const key = error.path.join('.');
|
|
7
|
-
|
|
8
|
-
if (!errors[key]) {
|
|
9
|
-
errors[key] = [];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(errors[key]).push(error.message);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
return errors;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const validate = (schema) => async (ctx, next) => {
|
|
19
|
-
const result = await schema.passthrough().safeParseAsync({
|
|
20
|
-
...(ctx.request.body),
|
|
21
|
-
...ctx.query,
|
|
22
|
-
...ctx.params,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
if (!result.success) ctx.throw(400, { clientErrors: formatError(result.error) });
|
|
26
|
-
|
|
27
|
-
ctx.validatedData = result.data;
|
|
28
|
-
|
|
29
|
-
await next();
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export default validate;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import db from "#hive/db";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import _ from "lodash";
|
|
5
|
-
import validateSchema from "./migrations.schema";
|
|
6
|
-
import { getDirname } from '#hive/helpers/esm';
|
|
7
|
-
|
|
8
|
-
const __dirname = getDirname(import.meta.url);
|
|
9
|
-
|
|
10
|
-
const service = db.createService("__migrationVersion", {
|
|
11
|
-
validate: validateSchema,
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
const migrationsPath = path.join(__dirname, "migrations");
|
|
15
|
-
|
|
16
|
-
const _id = "migration_version";
|
|
17
|
-
|
|
18
|
-
const getMigrationNames = () =>
|
|
19
|
-
new Promise((resolve, reject) => {
|
|
20
|
-
fs.readdir(migrationsPath, (err, files) => {
|
|
21
|
-
if (err) {
|
|
22
|
-
reject(err);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
resolve(files);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
service.getCurrentMigrationVersion = () =>
|
|
30
|
-
service.findOne({ _id }).then((doc) => {
|
|
31
|
-
if (!doc) {
|
|
32
|
-
return 0;
|
|
33
|
-
}
|
|
34
|
-
return doc.version;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
service.getMigrations = () => {
|
|
38
|
-
let migrations = null;
|
|
39
|
-
return getMigrationNames()
|
|
40
|
-
.then((names) => {
|
|
41
|
-
migrations = names.map((name) => {
|
|
42
|
-
const migrationPath = path.join(migrationsPath, name);
|
|
43
|
-
// eslint-disable-next-line import/no-dynamic-require, global-require
|
|
44
|
-
// return require(migrationPath);
|
|
45
|
-
});
|
|
46
|
-
return migrations;
|
|
47
|
-
})
|
|
48
|
-
.catch((err) => {
|
|
49
|
-
throw err;
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
service.setNewMigrationVersion = (version) =>
|
|
54
|
-
service.atomic.findOneAndUpdate(
|
|
55
|
-
{ _id },
|
|
56
|
-
{
|
|
57
|
-
$set: {
|
|
58
|
-
version,
|
|
59
|
-
},
|
|
60
|
-
$setOnInsert: {
|
|
61
|
-
_id,
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{ upsert: true }
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
service.promiseLimit = (documents = [], limit, operator) => {
|
|
68
|
-
const chunks = _.chunk(documents, limit);
|
|
69
|
-
return chunks.reduce((init, chunk) => {
|
|
70
|
-
return init.then(() => {
|
|
71
|
-
return Promise.all(chunk.map((c) => operator(c)));
|
|
72
|
-
});
|
|
73
|
-
}, Promise.resolve());
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
export default service;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import Migration from 'migrations/migration';
|
|
2
|
-
// const migrationService = require('migrations/migration.service');
|
|
3
|
-
//
|
|
4
|
-
// const userService = require('resources/user/user.service');
|
|
5
|
-
|
|
6
|
-
const migration = new Migration(1, "Example");
|
|
7
|
-
|
|
8
|
-
migration.migrate = async () => {
|
|
9
|
-
// const userIds = await userService.distinct('_id', {
|
|
10
|
-
// isEmailVerified: true,
|
|
11
|
-
// });
|
|
12
|
-
//
|
|
13
|
-
// await migrationService.promiseLimit(userIds, 50, (userId) => userService.updateOne(
|
|
14
|
-
// { _id: userId },
|
|
15
|
-
// (old) => ({
|
|
16
|
-
// ...old,
|
|
17
|
-
// isEmailVerified: false,
|
|
18
|
-
// }),
|
|
19
|
-
// ));
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default migration;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import dbSchema from '#hive/helpers/schema/db.schema';
|
|
3
|
-
|
|
4
|
-
export default dbSchema.extend({
|
|
5
|
-
startTime: z.date(),
|
|
6
|
-
finishTime: z.date().optional(),
|
|
7
|
-
status: z.string(),
|
|
8
|
-
error: z.string().optional(),
|
|
9
|
-
errorStack: z.string().optional(),
|
|
10
|
-
duration: z.string().optional(),
|
|
11
|
-
migrationVersion: z.number(),
|
|
12
|
-
});
|
|
13
|
-
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import db from '#hive/db';
|
|
2
|
-
import validateSchema from './migration-log.schema.js';
|
|
3
|
-
|
|
4
|
-
const service = db.createService("__migrationLog", {
|
|
5
|
-
validate: validateSchema,
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
service.startMigrationLog = (_id, startTime, migrationVersion) => {
|
|
9
|
-
return service.atomic.findOneAndUpdate(
|
|
10
|
-
{ _id },
|
|
11
|
-
{
|
|
12
|
-
$set: {
|
|
13
|
-
migrationVersion,
|
|
14
|
-
startTime,
|
|
15
|
-
status: "running",
|
|
16
|
-
},
|
|
17
|
-
$setOnInsert: {
|
|
18
|
-
_id,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
{ upsert: true }
|
|
22
|
-
);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
service.failMigrationLog = (_id, finishTime, err) =>
|
|
26
|
-
service.atomic.update(
|
|
27
|
-
{ _id },
|
|
28
|
-
{
|
|
29
|
-
$set: {
|
|
30
|
-
finishTime,
|
|
31
|
-
status: "failed",
|
|
32
|
-
error: err.message,
|
|
33
|
-
errorStack: err.stack,
|
|
34
|
-
},
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
service.finishMigrationLog = (_id, finishTime, duration) =>
|
|
39
|
-
service.atomic.update(
|
|
40
|
-
{ _id },
|
|
41
|
-
{
|
|
42
|
-
$set: {
|
|
43
|
-
finishTime,
|
|
44
|
-
status: "completed",
|
|
45
|
-
duration,
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
export default service;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import 'moment-duration-format';
|
|
2
|
-
import moment from 'moment';
|
|
3
|
-
import logger from '#hive/logger';
|
|
4
|
-
import migrationLogService from './migrations-log/migration-log.service';
|
|
5
|
-
import migrationService from './migration.service';
|
|
6
|
-
|
|
7
|
-
const migrator = {};
|
|
8
|
-
|
|
9
|
-
const run = async (migrations, curVersion) => {
|
|
10
|
-
const newMigrations = migrations
|
|
11
|
-
.filter((migration) => migration.version > curVersion)
|
|
12
|
-
.sort((a, b) => a.version - b.version);
|
|
13
|
-
|
|
14
|
-
if (!newMigrations.length) {
|
|
15
|
-
logger.info(`No new migrations found, stopping the process.
|
|
16
|
-
Current database version is ${curVersion}`);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
let migrationLogId;
|
|
21
|
-
let migration;
|
|
22
|
-
let lastMigrationVersion;
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
for (migration of newMigrations) {
|
|
26
|
-
//eslint-disable-line
|
|
27
|
-
migrationLogId = migrationService.generateId();
|
|
28
|
-
const startTime = new Date();
|
|
29
|
-
await migrationLogService.startMigrationLog(
|
|
30
|
-
migrationLogId,
|
|
31
|
-
startTime,
|
|
32
|
-
migration.version
|
|
33
|
-
); //eslint-disable-line
|
|
34
|
-
logger.info(
|
|
35
|
-
`Migration #${migration.version} is running: ${migration.description}`
|
|
36
|
-
);
|
|
37
|
-
await migration.migrate(); //eslint-disable-line
|
|
38
|
-
|
|
39
|
-
lastMigrationVersion = migration.version;
|
|
40
|
-
await migrationService.setNewMigrationVersion(migration.version); //eslint-disable-line
|
|
41
|
-
const finishTime = new Date();
|
|
42
|
-
const duration = moment
|
|
43
|
-
.duration(finishTime - startTime)
|
|
44
|
-
.format("h [hrs], m [min], s [sec], S [ms]");
|
|
45
|
-
|
|
46
|
-
await migrationLogService.finishMigrationLog(
|
|
47
|
-
migrationLogId,
|
|
48
|
-
finishTime,
|
|
49
|
-
duration
|
|
50
|
-
); //eslint-disable-line
|
|
51
|
-
logger.info(
|
|
52
|
-
`Database has been updated to the version #${migration.version}`
|
|
53
|
-
);
|
|
54
|
-
logger.info(`Time of migration #${migration.version}: ${duration}`);
|
|
55
|
-
}
|
|
56
|
-
logger.info(`All migrations has been finished, stopping the process.
|
|
57
|
-
Current database version is: ${lastMigrationVersion}`);
|
|
58
|
-
} catch (err) {
|
|
59
|
-
logger.error(`Failed to update migration to version ${migration.version}`);
|
|
60
|
-
logger.error(err);
|
|
61
|
-
await migrationLogService.failMigrationLog(migrationLogId, new Date(), err);
|
|
62
|
-
throw err;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
migrator.exec = async () => {
|
|
67
|
-
const [migrations, currentVersion] = await Promise.all([
|
|
68
|
-
migrationService.getMigrations(),
|
|
69
|
-
migrationService.getCurrentMigrationVersion(),
|
|
70
|
-
]);
|
|
71
|
-
await run(migrations, currentVersion);
|
|
72
|
-
process.exit(0);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export default migrator;
|
package/starter/src/migrator.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
export const endpoint = {
|
|
4
|
-
method: "put",
|
|
5
|
-
url: "/trigger-scheduler-handler",
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export const requestSchema = z.object({
|
|
9
|
-
name: z.string(),
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
export const handler = async (ctx) => {
|
|
13
|
-
const { name } = ctx.validatedData;
|
|
14
|
-
|
|
15
|
-
const schedulerHandler = await (import(`${process.env.HIVE_SRC}/scheduler/handlers/${name}`));
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
const data = await schedulerHandler.handler();
|
|
19
|
-
|
|
20
|
-
ctx.body = {
|
|
21
|
-
ok: true,
|
|
22
|
-
data,
|
|
23
|
-
};
|
|
24
|
-
} catch (err) {
|
|
25
|
-
ctx.body = {
|
|
26
|
-
ok: false,
|
|
27
|
-
err: err.message,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const middlewares = ['allowNoAuth'];
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { render } from '@react-email/render';
|
|
2
|
-
import { MyEmailComponent } from '#hive/emails/compiled/MyEmailComponent';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
|
|
5
|
-
export const handler = (ctx) => {
|
|
6
|
-
const emailHtml = render(React.createElement(MyEmailComponent, { name: 'test' }));
|
|
7
|
-
|
|
8
|
-
ctx.body = emailHtml;
|
|
9
|
-
ctx.status = 200;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const endpoint = {
|
|
13
|
-
method: "get",
|
|
14
|
-
url: "/",
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export default {
|
|
18
|
-
handler, endpoint
|
|
19
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import db from '#hive/db';
|
|
2
|
-
import crypto from 'crypto';
|
|
3
|
-
import util from 'util';
|
|
4
|
-
|
|
5
|
-
const randomBytes = util.promisify(crypto.randomBytes, crypto);
|
|
6
|
-
|
|
7
|
-
import setCookie from '#hive/services/setCookie';
|
|
8
|
-
|
|
9
|
-
const tokenService = db.services.tokens;
|
|
10
|
-
|
|
11
|
-
const generateSecureToken = async (tokenLength = 32) => {
|
|
12
|
-
const buf = await randomBytes(tokenLength);
|
|
13
|
-
return buf.toString('hex');
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export default async (ctx, { userId, metadata = null }) => {
|
|
17
|
-
const token = await generateSecureToken();
|
|
18
|
-
const otp = await generateSecureToken();
|
|
19
|
-
|
|
20
|
-
await tokenService.create({
|
|
21
|
-
token,
|
|
22
|
-
user: {
|
|
23
|
-
_id: userId,
|
|
24
|
-
},
|
|
25
|
-
otp,
|
|
26
|
-
...(metadata ? { metadata } : {})
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
setCookie(ctx, { name: 'access_token', value: token });
|
|
30
|
-
|
|
31
|
-
return {
|
|
32
|
-
token,
|
|
33
|
-
otp,
|
|
34
|
-
};
|
|
35
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import dbSchema from '#hive/helpers/schema/db.schema';
|
|
3
|
-
|
|
4
|
-
export default dbSchema.extend({
|
|
5
|
-
user: z.object({
|
|
6
|
-
_id: z.string(),
|
|
7
|
-
}),
|
|
8
|
-
token: z.string(),
|
|
9
|
-
otp: z.string().nullable().optional(),
|
|
10
|
-
metadata: z.object({}).optional()
|
|
11
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import isAuthorized from '#hive/middlewares/isAuthorized';
|
|
3
|
-
|
|
4
|
-
export const handler = async (ctx) => {
|
|
5
|
-
ctx.body = ctx.state.user;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export const middlewares = [isAuthorized];
|
|
9
|
-
export const requestSchema = z.object({});
|
|
10
|
-
|
|
11
|
-
export const endpoint = {
|
|
12
|
-
method: "GET",
|
|
13
|
-
url: "/me",
|
|
14
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import db from '#hive/db';
|
|
3
|
-
|
|
4
|
-
const userService = db.services.users;
|
|
5
|
-
|
|
6
|
-
export const handler = async (ctx) => {
|
|
7
|
-
const { userId } = ctx.params;
|
|
8
|
-
const user = await userService.findOne({ _id: userId });
|
|
9
|
-
ctx.body = user;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const requestSchema = z.object({
|
|
13
|
-
userId: z.string(),
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
export const endpoint = {
|
|
17
|
-
method: "GET",
|
|
18
|
-
url: "/profile/:userId",
|
|
19
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
console.log('hello from handler');
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import db from '#hive/db';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import slug from 'slug';
|
|
4
|
-
|
|
5
|
-
const userService = db.services.users;
|
|
6
|
-
|
|
7
|
-
const formatUsername = ({ username, fullName, email }) => {
|
|
8
|
-
return (
|
|
9
|
-
username ||
|
|
10
|
-
fullName ? slug(`${fullName.split(' ')[0]} ${fullName.split(' ')[1] || ''}`, '.') : email?.split('@')[0]
|
|
11
|
-
);
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const createUserAccount = async (userData) => {
|
|
15
|
-
let username = formatUsername({ fullName: userData.fullName, email: userData.email });
|
|
16
|
-
|
|
17
|
-
if (await userService.exists({ username })) {
|
|
18
|
-
username += _.random(1000, 9999);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const user = await userService.create({
|
|
22
|
-
fullName: userData.fullName,
|
|
23
|
-
username,
|
|
24
|
-
email: userData.email,
|
|
25
|
-
isEmailVerified: true,
|
|
26
|
-
avatarUrl: userData.avatarUrl,
|
|
27
|
-
oauth: userData.oauth,
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
return user;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const ensureUserCreated = async (userData) => {
|
|
34
|
-
const user = await userService.findOne({ email: userData.email });
|
|
35
|
-
|
|
36
|
-
if (user) {
|
|
37
|
-
if (userData.oauth) {
|
|
38
|
-
const changedUser = await userService.updateOne(
|
|
39
|
-
{ _id: user._id },
|
|
40
|
-
(old) => {
|
|
41
|
-
const newUser = old;
|
|
42
|
-
newUser.oauth = old.oauth || {};
|
|
43
|
-
newUser.oauth = {
|
|
44
|
-
...newUser.oauth,
|
|
45
|
-
...userData.oauth
|
|
46
|
-
}
|
|
47
|
-
newUser.isEmailVerified = true;
|
|
48
|
-
|
|
49
|
-
return newUser;
|
|
50
|
-
}
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
return { user: changedUser, isNew: false };
|
|
54
|
-
} else {
|
|
55
|
-
return { user, isNew: false };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
user: await createUserAccount(userData),
|
|
61
|
-
isNew: true,
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export default async (userData) => {
|
|
66
|
-
const { user, isNew } = await ensureUserCreated(userData);
|
|
67
|
-
return user;
|
|
68
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import dbSchema from '#hive/helpers/schema/db.schema';
|
|
3
|
-
|
|
4
|
-
const users = dbSchema.extend({
|
|
5
|
-
email: z.string().email(),
|
|
6
|
-
fullName: z.string(),
|
|
7
|
-
avatarUrl: z.string().url().optional(),
|
|
8
|
-
|
|
9
|
-
password: z.string(),
|
|
10
|
-
|
|
11
|
-
oauth: z.object({
|
|
12
|
-
google: z.object({}),
|
|
13
|
-
}).optional(),
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
export default users;
|