modelence 0.8.0 → 0.9.0-dev.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.
- package/dist/app/authConfig.d.ts +68 -0
- package/dist/app/authConfig.d.ts.map +1 -0
- package/dist/app/authConfig.js +8 -0
- package/dist/app/authConfig.js.map +1 -0
- package/dist/app/backendApi.d.ts +29 -0
- package/dist/app/backendApi.d.ts.map +1 -0
- package/dist/app/backendApi.js +69 -0
- package/dist/app/backendApi.js.map +1 -0
- package/dist/app/email.d.ts +3 -0
- package/dist/app/email.d.ts.map +1 -0
- package/dist/app/email.js +8 -0
- package/dist/app/email.js.map +1 -0
- package/dist/app/emailConfig.d.ts +27 -0
- package/dist/app/emailConfig.d.ts.map +1 -0
- package/dist/app/emailConfig.js +8 -0
- package/dist/app/emailConfig.js.map +1 -0
- package/dist/app/index.d.ts +20 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +258 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/loggerProcess.d.ts +5 -0
- package/dist/app/loggerProcess.d.ts.map +1 -0
- package/dist/app/loggerProcess.js +90 -0
- package/dist/app/loggerProcess.js.map +1 -0
- package/dist/app/metrics.d.ts +6 -0
- package/dist/app/metrics.d.ts.map +1 -0
- package/dist/app/metrics.js +92 -0
- package/dist/app/metrics.js.map +1 -0
- package/dist/app/module.d.ts +77 -0
- package/dist/app/module.d.ts.map +1 -0
- package/dist/app/module.js +46 -0
- package/dist/app/module.js.map +1 -0
- package/dist/app/server.d.ts +37 -0
- package/dist/app/server.d.ts.map +1 -0
- package/dist/app/server.js +198 -0
- package/dist/app/server.js.map +1 -0
- package/dist/app/state.d.ts +19 -0
- package/dist/app/state.d.ts.map +1 -0
- package/dist/app/state.js +27 -0
- package/dist/app/state.js.map +1 -0
- package/dist/app/websocketConfig.d.ts +7 -0
- package/dist/app/websocketConfig.d.ts.map +1 -0
- package/dist/app/websocketConfig.js +8 -0
- package/dist/app/websocketConfig.js.map +1 -0
- package/dist/auth/client/index.d.ts +69 -0
- package/dist/auth/client/index.d.ts.map +1 -0
- package/dist/auth/client/index.js +79 -0
- package/dist/auth/client/index.js.map +1 -0
- package/dist/auth/db.d.ts +176 -0
- package/dist/auth/db.d.ts.map +1 -0
- package/dist/auth/db.js +117 -0
- package/dist/auth/db.js.map +1 -0
- package/dist/auth/deleteUser.d.ts +5 -0
- package/dist/auth/deleteUser.d.ts.map +1 -0
- package/dist/auth/deleteUser.js +34 -0
- package/dist/auth/deleteUser.js.map +1 -0
- package/dist/auth/disposableEmails.d.ts +6 -0
- package/dist/auth/disposableEmails.d.ts.map +1 -0
- package/dist/auth/disposableEmails.js +47 -0
- package/dist/auth/disposableEmails.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +33 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/login.d.ts +9 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +100 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/password.d.ts +14 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +26 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/profile.d.ts +10 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/profile.js +13 -0
- package/dist/auth/profile.js.map +1 -0
- package/dist/auth/providers/github.d.ts +3 -0
- package/dist/auth/providers/github.d.ts.map +1 -0
- package/dist/auth/providers/github.js +122 -0
- package/dist/auth/providers/github.js.map +1 -0
- package/dist/auth/providers/google.d.ts +3 -0
- package/dist/auth/providers/google.d.ts.map +1 -0
- package/dist/auth/providers/google.js +108 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/auth/providers/oauth-common.d.ts +13 -0
- package/dist/auth/providers/oauth-common.d.ts.map +1 -0
- package/dist/auth/providers/oauth-common.js +109 -0
- package/dist/auth/providers/oauth-common.js.map +1 -0
- package/dist/auth/resetPassword.d.ts +10 -0
- package/dist/auth/resetPassword.d.ts.map +1 -0
- package/dist/auth/resetPassword.js +108 -0
- package/dist/auth/resetPassword.js.map +1 -0
- package/dist/auth/role.d.ts +8 -0
- package/dist/auth/role.d.ts.map +1 -0
- package/dist/auth/role.js +37 -0
- package/dist/auth/role.js.map +1 -0
- package/dist/auth/session.d.ts +24 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +84 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/signup.d.ts +3 -0
- package/dist/auth/signup.d.ts.map +1 -0
- package/dist/auth/signup.js +89 -0
- package/dist/auth/signup.js.map +1 -0
- package/dist/auth/templates/emailVerficationTemplate.d.ts +6 -0
- package/dist/auth/templates/emailVerficationTemplate.d.ts.map +1 -0
- package/dist/auth/templates/emailVerficationTemplate.js +9 -0
- package/dist/auth/templates/emailVerficationTemplate.js.map +1 -0
- package/dist/auth/types.d.ts +22 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user.d.ts +5 -0
- package/dist/auth/user.d.ts.map +1 -0
- package/dist/auth/user.js +152 -0
- package/dist/auth/user.js.map +1 -0
- package/dist/auth/validators.d.ts +3 -0
- package/dist/auth/validators.d.ts.map +1 -0
- package/dist/auth/validators.js +8 -0
- package/dist/auth/validators.js.map +1 -0
- package/dist/auth/verification.d.ts +8 -0
- package/dist/auth/verification.d.ts.map +1 -0
- package/dist/auth/verification.js +94 -0
- package/dist/auth/verification.js.map +1 -0
- package/dist/bin/auth.d.ts +4 -0
- package/dist/bin/auth.d.ts.map +1 -0
- package/dist/bin/auth.js +48 -0
- package/dist/bin/auth.js.map +1 -0
- package/dist/bin/build.d.ts +2 -0
- package/dist/bin/build.d.ts.map +1 -0
- package/dist/bin/build.js +78 -0
- package/dist/bin/build.js.map +1 -0
- package/dist/bin/config.d.ts +11 -0
- package/dist/bin/config.d.ts.map +1 -0
- package/dist/bin/config.js +91 -0
- package/dist/bin/config.js.map +1 -0
- package/dist/bin/deploy.d.ts +6 -0
- package/dist/bin/deploy.d.ts.map +1 -0
- package/dist/bin/deploy.js +129 -0
- package/dist/bin/deploy.js.map +1 -0
- package/dist/bin/dev.d.ts +2 -0
- package/dist/bin/dev.d.ts.map +1 -0
- package/dist/bin/dev.js +14 -0
- package/dist/bin/dev.js.map +1 -0
- package/dist/bin/modelence.d.ts +3 -0
- package/dist/bin/modelence.d.ts.map +1 -0
- package/dist/bin/modelence.js +57 -3
- package/dist/bin/modelence.js.map +1 -1
- package/dist/bin/setup.d.ts +5 -0
- package/dist/bin/setup.d.ts.map +1 -0
- package/dist/bin/setup.js +91 -0
- package/dist/bin/setup.js.map +1 -0
- package/dist/bin/start.d.ts +2 -0
- package/dist/bin/start.d.ts.map +1 -0
- package/dist/bin/start.js +15 -0
- package/dist/bin/start.js.map +1 -0
- package/dist/client/AppProvider.d.ts +8 -0
- package/dist/client/AppProvider.d.ts.map +1 -0
- package/dist/client/AppProvider.js +31 -0
- package/dist/client/AppProvider.js.map +1 -0
- package/dist/client/errorHandler.d.ts +4 -0
- package/dist/client/errorHandler.d.ts.map +1 -0
- package/dist/client/errorHandler.js +10 -0
- package/dist/client/errorHandler.js.map +1 -0
- package/dist/client/localStorage.d.ts +3 -0
- package/dist/client/localStorage.d.ts.map +1 -0
- package/dist/client/localStorage.js +14 -0
- package/dist/client/localStorage.js.map +1 -0
- package/dist/client/method.d.ts +6 -0
- package/dist/client/method.d.ts.map +1 -0
- package/dist/client/method.js +52 -0
- package/dist/client/method.js.map +1 -0
- package/dist/client/renderApp.d.ts +9 -0
- package/dist/client/renderApp.d.ts.map +1 -0
- package/dist/client/renderApp.js +28 -0
- package/dist/client/renderApp.js.map +1 -0
- package/dist/client/session.d.ts +34 -0
- package/dist/client/session.d.ts.map +1 -0
- package/dist/client/session.js +83 -0
- package/dist/client/session.js.map +1 -0
- package/dist/client.d.ts +10 -133
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +14 -1
- package/dist/client.js.map +1 -1
- package/dist/config/client.d.ts +10 -0
- package/dist/config/client.d.ts.map +1 -0
- package/dist/config/client.js +14 -0
- package/dist/config/client.js.map +1 -0
- package/dist/config/server.d.ts +48 -0
- package/dist/config/server.d.ts.map +1 -0
- package/dist/config/server.js +85 -0
- package/dist/config/server.js.map +1 -0
- package/dist/config/sync.d.ts +2 -0
- package/dist/config/sync.d.ts.map +1 -0
- package/dist/config/sync.js +32 -0
- package/dist/config/sync.js.map +1 -0
- package/dist/config/types.d.ts +19 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/cron/jobs.d.ts +13 -0
- package/dist/cron/jobs.d.ts.map +1 -0
- package/dist/cron/jobs.js +155 -0
- package/dist/cron/jobs.js.map +1 -0
- package/dist/cron/types.d.ts +29 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +2 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/data/schemaSerializer.d.ts +37 -0
- package/dist/data/schemaSerializer.d.ts.map +1 -0
- package/dist/data/schemaSerializer.js +104 -0
- package/dist/data/schemaSerializer.js.map +1 -0
- package/dist/{types-WgRbQ-tj.d.ts → data/store.d.ts} +13 -231
- package/dist/data/store.d.ts.map +1 -0
- package/dist/data/store.js +501 -0
- package/dist/data/store.js.map +1 -0
- package/dist/data/types.d.ts +47 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +35 -0
- package/dist/data/types.js.map +1 -0
- package/dist/db/client.d.ts +5 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +41 -0
- package/dist/db/client.js.map +1 -0
- package/dist/error.d.ts +16 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +24 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +6 -31
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lock/db.d.ts +19 -0
- package/dist/lock/db.d.ts.map +1 -0
- package/dist/lock/db.js +28 -0
- package/dist/lock/db.js.map +1 -0
- package/dist/lock/helpers.d.ts +28 -0
- package/dist/lock/helpers.d.ts.map +1 -0
- package/dist/lock/helpers.js +107 -0
- package/dist/lock/helpers.js.map +1 -0
- package/dist/lock/index.d.ts +4 -0
- package/dist/lock/index.d.ts.map +1 -0
- package/dist/lock/index.js +4 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/lock/module.d.ts +7 -0
- package/dist/lock/module.d.ts.map +1 -0
- package/dist/lock/module.js +9 -0
- package/dist/lock/module.js.map +1 -0
- package/dist/methods/index.d.ts +7 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/index.js +65 -0
- package/dist/methods/index.js.map +1 -0
- package/dist/methods/serialize.d.ts +15 -0
- package/dist/methods/serialize.d.ts.map +1 -0
- package/dist/methods/serialize.js +56 -0
- package/dist/methods/serialize.js.map +1 -0
- package/dist/methods/types.d.ts +37 -0
- package/dist/methods/types.d.ts.map +1 -0
- package/dist/methods/types.js +2 -0
- package/dist/methods/types.js.map +1 -0
- package/dist/migration/db.d.ts +17 -0
- package/dist/migration/db.d.ts.map +1 -0
- package/dist/migration/db.js +13 -0
- package/dist/migration/db.js.map +1 -0
- package/dist/migration/index.d.ts +11 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +85 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/mongo.d.ts +2 -3
- package/dist/mongo.d.ts.map +1 -0
- package/dist/mongo.js +2 -1
- package/dist/mongo.js.map +1 -1
- package/dist/rate-limit/db.d.ts +29 -0
- package/dist/rate-limit/db.d.ts.map +1 -0
- package/dist/rate-limit/db.js +25 -0
- package/dist/rate-limit/db.js.map +1 -0
- package/dist/rate-limit/index.d.ts +4 -0
- package/dist/rate-limit/index.d.ts.map +1 -0
- package/dist/rate-limit/index.js +6 -0
- package/dist/rate-limit/index.js.map +1 -0
- package/dist/rate-limit/rules.d.ts +22 -0
- package/dist/rate-limit/rules.d.ts.map +1 -0
- package/dist/rate-limit/rules.js +112 -0
- package/dist/rate-limit/rules.js.map +1 -0
- package/dist/rate-limit/types.d.ts +12 -0
- package/dist/rate-limit/types.d.ts.map +1 -0
- package/dist/rate-limit/types.js +2 -0
- package/dist/rate-limit/types.js.map +1 -0
- package/dist/routes/handler.d.ts +4 -0
- package/dist/routes/handler.d.ts.map +1 -0
- package/dist/routes/handler.js +66 -0
- package/dist/routes/handler.js.map +1 -0
- package/dist/routes/types.d.ts +45 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/routes/types.js +2 -0
- package/dist/routes/types.js.map +1 -0
- package/dist/server.d.ts +19 -551
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +15 -18
- package/dist/server.js.map +1 -1
- package/dist/system/index.d.ts +4 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/index.js +21 -0
- package/dist/system/index.js.map +1 -0
- package/dist/telemetry/index.d.ts +11 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +79 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry.d.ts +2 -11
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +1 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/time.d.ts +8 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +13 -0
- package/dist/time.js.map +1 -0
- package/dist/types/email.d.ts +25 -0
- package/dist/types/email.d.ts.map +1 -0
- package/dist/types/email.js +2 -0
- package/dist/types/email.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types.d.ts +10 -7
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +15 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/viteServer.d.ts +13 -0
- package/dist/viteServer.d.ts.map +1 -0
- package/dist/viteServer.js +132 -0
- package/dist/viteServer.js.map +1 -0
- package/dist/websocket/client.d.ts +9 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +16 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/clientChannel.d.ts +9 -0
- package/dist/websocket/clientChannel.d.ts.map +1 -0
- package/dist/websocket/clientChannel.js +26 -0
- package/dist/websocket/clientChannel.js.map +1 -0
- package/dist/websocket/serverChannel.d.ts +14 -0
- package/dist/websocket/serverChannel.d.ts.map +1 -0
- package/dist/websocket/serverChannel.js +21 -0
- package/dist/websocket/serverChannel.js.map +1 -0
- package/dist/websocket/socketio/client.d.ts +4 -0
- package/dist/websocket/socketio/client.d.ts.map +1 -0
- package/dist/websocket/socketio/client.js +48 -0
- package/dist/websocket/socketio/client.js.map +1 -0
- package/dist/websocket/socketio/server.d.ts +10 -0
- package/dist/websocket/socketio/server.d.ts.map +1 -0
- package/dist/websocket/socketio/server.js +80 -0
- package/dist/websocket/socketio/server.js.map +1 -0
- package/dist/websocket/types.d.ts +45 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +2 -0
- package/dist/websocket/types.js.map +1 -0
- package/package.json +5 -6
- package/dist/chunk-3S2FFBNS.js +0 -2
- package/dist/chunk-3S2FFBNS.js.map +0 -1
- package/dist/chunk-3YAV3UUU.js +0 -3
- package/dist/chunk-3YAV3UUU.js.map +0 -1
- package/dist/chunk-55J6XMHW.js +0 -2
- package/dist/chunk-55J6XMHW.js.map +0 -1
- package/dist/chunk-C3UESBRX.js +0 -2
- package/dist/chunk-C3UESBRX.js.map +0 -1
- package/dist/chunk-DO5TZLF5.js +0 -2
- package/dist/chunk-DO5TZLF5.js.map +0 -1
- package/dist/chunk-PB6WQQ4L.js +0 -3
- package/dist/chunk-PB6WQQ4L.js.map +0 -1
- package/dist/index-CwdohC5n.d.ts +0 -15
- package/dist/package-3YQBVIVQ.js +0 -2
- package/dist/package-3YQBVIVQ.js.map +0 -1
- package/dist/types-Ds1ESQSs.d.ts +0 -106
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/auth/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ObjectId, RouteParams, RouteResponse } from '../server';
|
|
2
|
+
export declare function handleVerifyEmail(params: RouteParams): Promise<RouteResponse>;
|
|
3
|
+
export declare function sendVerificationEmail({ userId, email, baseUrl, }: {
|
|
4
|
+
userId: ObjectId;
|
|
5
|
+
email: string;
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/auth/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOhE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAoEnF;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,KAAK,EACL,OAAwC,GACzC,EAAE;IACD,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,iBAgCA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { usersCollection, emailVerificationTokensCollection } from './db';
|
|
3
|
+
import { getEmailConfig } from '../app/emailConfig';
|
|
4
|
+
import { randomBytes } from 'crypto';
|
|
5
|
+
import { time } from '../time';
|
|
6
|
+
import { htmlToText } from '../utils';
|
|
7
|
+
import { emailVerificationTemplate } from './templates/emailVerficationTemplate';
|
|
8
|
+
export async function handleVerifyEmail(params) {
|
|
9
|
+
const baseUrl = process.env.MODELENCE_SITE_URL;
|
|
10
|
+
const emailVerifiedRedirectUrl = getEmailConfig().emailVerifiedRedirectUrl || baseUrl || '/';
|
|
11
|
+
try {
|
|
12
|
+
const token = z.string().parse(params.query.token);
|
|
13
|
+
// Find token in database
|
|
14
|
+
const tokenDoc = await emailVerificationTokensCollection.findOne({
|
|
15
|
+
token,
|
|
16
|
+
expiresAt: { $gt: new Date() },
|
|
17
|
+
});
|
|
18
|
+
if (!tokenDoc) {
|
|
19
|
+
throw new Error('Invalid or expired verification token');
|
|
20
|
+
}
|
|
21
|
+
// Find user by token's userId
|
|
22
|
+
const userDoc = await usersCollection.findOne({ _id: tokenDoc.userId });
|
|
23
|
+
if (!userDoc) {
|
|
24
|
+
throw new Error('User not found');
|
|
25
|
+
}
|
|
26
|
+
const email = tokenDoc.email;
|
|
27
|
+
if (!email) {
|
|
28
|
+
throw new Error('Email not found in token');
|
|
29
|
+
}
|
|
30
|
+
// Mark the specific email as verified atomically
|
|
31
|
+
const updateResult = await usersCollection.updateOne({
|
|
32
|
+
_id: tokenDoc.userId,
|
|
33
|
+
'emails.address': email,
|
|
34
|
+
'emails.verified': { $ne: true },
|
|
35
|
+
}, { $set: { 'emails.$.verified': true } });
|
|
36
|
+
if (updateResult.matchedCount === 0) {
|
|
37
|
+
// Check if email exists but is already verified
|
|
38
|
+
const existingUser = await usersCollection.findOne({
|
|
39
|
+
_id: tokenDoc.userId,
|
|
40
|
+
'emails.address': email,
|
|
41
|
+
});
|
|
42
|
+
if (existingUser) {
|
|
43
|
+
throw new Error('Email is already verified');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error('Email address not found for this user');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Delete the used token
|
|
50
|
+
await emailVerificationTokensCollection.deleteOne({ _id: tokenDoc._id });
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof Error) {
|
|
54
|
+
console.error('Error verifying email:', error);
|
|
55
|
+
return {
|
|
56
|
+
status: 301,
|
|
57
|
+
redirect: `${emailVerifiedRedirectUrl}?status=error&message=${encodeURIComponent(error.message)}`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
status: 301,
|
|
63
|
+
redirect: `${emailVerifiedRedirectUrl}?status=verified`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export async function sendVerificationEmail({ userId, email, baseUrl = process.env.MODELENCE_SITE_URL, }) {
|
|
67
|
+
if (getEmailConfig().provider) {
|
|
68
|
+
const emailProvider = getEmailConfig().provider;
|
|
69
|
+
// Generate verification token
|
|
70
|
+
const verificationToken = randomBytes(32).toString('hex');
|
|
71
|
+
const expiresAt = new Date(Date.now() + time.hours(24));
|
|
72
|
+
// Store token in database
|
|
73
|
+
await emailVerificationTokensCollection.insertOne({
|
|
74
|
+
userId,
|
|
75
|
+
email,
|
|
76
|
+
token: verificationToken,
|
|
77
|
+
createdAt: new Date(),
|
|
78
|
+
expiresAt,
|
|
79
|
+
});
|
|
80
|
+
const verificationUrl = `${baseUrl}/api/_internal/auth/verify-email?token=${verificationToken}`;
|
|
81
|
+
const template = getEmailConfig()?.verification?.template || emailVerificationTemplate;
|
|
82
|
+
// TODO: we should have also the name on this step
|
|
83
|
+
const htmlTemplate = template({ name: '', email, verificationUrl });
|
|
84
|
+
const textContent = htmlToText(htmlTemplate);
|
|
85
|
+
await emailProvider?.sendEmail({
|
|
86
|
+
to: email,
|
|
87
|
+
from: getEmailConfig()?.from || 'noreply@modelence.com',
|
|
88
|
+
subject: getEmailConfig()?.verification?.subject || 'Verify your email address',
|
|
89
|
+
text: textContent,
|
|
90
|
+
html: htmlTemplate,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/auth/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/bin/auth.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM;;GAuBjD"}
|
package/dist/bin/auth.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import open from 'open';
|
|
2
|
+
import { writeFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
export async function authenticateCli(host) {
|
|
5
|
+
// TODO: check if a token already exists in .modelence/auth.json
|
|
6
|
+
const response = await fetch(`${host}/api/cli/auth`, {
|
|
7
|
+
method: 'POST',
|
|
8
|
+
});
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error('Failed to create CLI authentication code');
|
|
11
|
+
}
|
|
12
|
+
const { code, verificationUrl } = await response.json();
|
|
13
|
+
console.log(`Please visit ${verificationUrl} to authenticate`);
|
|
14
|
+
console.log(`Code: ${code}`);
|
|
15
|
+
await open(verificationUrl);
|
|
16
|
+
const token = await waitForAuth(host, code);
|
|
17
|
+
writeFileSync(join(process.cwd(), '.modelence', 'auth.json'), JSON.stringify({ token }));
|
|
18
|
+
return { token };
|
|
19
|
+
}
|
|
20
|
+
async function waitForAuth(host, code) {
|
|
21
|
+
const pollInterval = 5 * 1000; // 5 seconds
|
|
22
|
+
const pollTimeout = 10 * 60 * 1000; // 10 minutes
|
|
23
|
+
const pollExpireTs = Date.now() + pollTimeout;
|
|
24
|
+
while (Date.now() < pollExpireTs) {
|
|
25
|
+
try {
|
|
26
|
+
const token = await pollForToken(host, code);
|
|
27
|
+
if (token) {
|
|
28
|
+
return token;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('Error polling for CLI token:', error);
|
|
33
|
+
}
|
|
34
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
35
|
+
}
|
|
36
|
+
throw new Error('Unable to authenticate CLI - timed out. Please try again.');
|
|
37
|
+
}
|
|
38
|
+
async function pollForToken(host, code) {
|
|
39
|
+
const response = await fetch(`${host}/api/cli/token?code=${code}`, {
|
|
40
|
+
method: 'GET',
|
|
41
|
+
});
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
throw new Error(`CLI token polling failed: ${response.statusText}`);
|
|
44
|
+
}
|
|
45
|
+
const { token } = await response.json();
|
|
46
|
+
return token;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/bin/auth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,gEAAgE;IAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,eAAe,EAAE;QACnD,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAe,kBAAkB,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAE7B,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,IAAY;IACnD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAC3C,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,uBAAuB,IAAI,EAAE,EAAE;QACjE,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/bin/build.ts"],"names":[],"mappings":"AAiEA,wBAAsB,KAAK,kBAuB1B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import { getBuildPath, getModelencePath, getPostBuildCommand, getServerPath } from './config';
|
|
3
|
+
import { build as tsupBuild } from 'tsup';
|
|
4
|
+
import { build as viteBuild, mergeConfig, loadConfigFromFile } from 'vite';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import pkg from '../../package.json';
|
|
8
|
+
async function buildClient() {
|
|
9
|
+
const postBuildCommand = getPostBuildCommand();
|
|
10
|
+
if (postBuildCommand) {
|
|
11
|
+
console.log('Running post-build command...');
|
|
12
|
+
execSync(postBuildCommand);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
await buildVite();
|
|
16
|
+
}
|
|
17
|
+
async function buildVite() {
|
|
18
|
+
console.log('Building client with Vite...');
|
|
19
|
+
const userConfig = await loadConfigFromFile({
|
|
20
|
+
command: 'build',
|
|
21
|
+
mode: process.env.NODE_ENV || 'production',
|
|
22
|
+
});
|
|
23
|
+
const modelenceConfig = {
|
|
24
|
+
build: {
|
|
25
|
+
outDir: path.resolve(process.cwd(), '.modelence/build/client').replace(/\\/g, '/'),
|
|
26
|
+
emptyOutDir: true,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
await viteBuild(mergeConfig(userConfig?.config || {}, modelenceConfig, true));
|
|
30
|
+
}
|
|
31
|
+
async function buildServer() {
|
|
32
|
+
console.log('Building server with tsup...');
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
tsupBuild({
|
|
35
|
+
entry: [getServerPath()],
|
|
36
|
+
format: 'esm',
|
|
37
|
+
sourcemap: true,
|
|
38
|
+
minify: process.env.NODE_ENV === 'production',
|
|
39
|
+
outDir: '.modelence/build',
|
|
40
|
+
clean: true,
|
|
41
|
+
watch: false,
|
|
42
|
+
bundle: true,
|
|
43
|
+
treeshake: true,
|
|
44
|
+
platform: 'node',
|
|
45
|
+
external: [
|
|
46
|
+
...Object.keys(pkg.dependencies ?? {}),
|
|
47
|
+
...Object.keys(pkg.peerDependencies ?? {}),
|
|
48
|
+
],
|
|
49
|
+
outExtension: () => ({
|
|
50
|
+
js: '.mjs',
|
|
51
|
+
}),
|
|
52
|
+
onSuccess: async () => {
|
|
53
|
+
resolve(undefined);
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export async function build() {
|
|
59
|
+
console.log('Building Modelence project...');
|
|
60
|
+
try {
|
|
61
|
+
const buildDir = getBuildPath();
|
|
62
|
+
await fs.rm(buildDir, { recursive: true, force: true });
|
|
63
|
+
await buildServer();
|
|
64
|
+
await buildClient();
|
|
65
|
+
console.log('Build completed successfully!');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(error);
|
|
69
|
+
throw new Error('Build failed');
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
await fs.access(getModelencePath());
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
throw new Error('Could not find the .modelence directory. Looks like something went wrong during the build.');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/bin/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,GAAG,MAAM,oBAAoB,CAAC;AAErC,KAAK,UAAU,WAAW;IACxB,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC;QAC1C,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;KAC3C,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG;QACtB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAClF,WAAW,EAAE,IAAI;SAClB;KACF,CAAC;IAEF,MAAM,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,SAAS,CAAC;YACR,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAC7C,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE;gBACR,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;gBACtC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;aAC3C;YACD,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,EAAE,EAAE,MAAM;aACX,CAAC;YACF,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAExD,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,WAAW,EAAE,CAAC;QAEpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ModelenceConfig } from '../types';
|
|
2
|
+
export declare function getEnv(): Record<string, string>;
|
|
3
|
+
export declare function getConfig(): ModelenceConfig;
|
|
4
|
+
export declare function getStudioUrl(path: string): string;
|
|
5
|
+
export declare function getServerPath(): string;
|
|
6
|
+
export declare function getPostBuildCommand(): string | undefined;
|
|
7
|
+
export declare function getBuildPath(subPath?: string): string;
|
|
8
|
+
export declare function getProjectPath(subPath: string): string;
|
|
9
|
+
export declare function getModelencePath(subPath?: string): string;
|
|
10
|
+
export declare function loadEnv(): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/bin/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,wBAAgB,MAAM,2BAMrB;AAED,wBAAgB,SAAS,oBAMxB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,UAGxC;AAED,wBAAgB,aAAa,WAK5B;AAED,wBAAgB,mBAAmB,uBAElC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,UAO5C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,UAG7C;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,UAOhD;AAED,wBAAsB,OAAO,kBAqC5B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createJiti } from 'jiti';
|
|
2
|
+
import { parse as parseDotenv } from 'dotenv';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import fs from 'fs/promises';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
let env = null;
|
|
7
|
+
let config = null;
|
|
8
|
+
export function getEnv() {
|
|
9
|
+
if (!env) {
|
|
10
|
+
throw new Error('Environment variables not loaded');
|
|
11
|
+
}
|
|
12
|
+
return env;
|
|
13
|
+
}
|
|
14
|
+
export function getConfig() {
|
|
15
|
+
if (!config) {
|
|
16
|
+
throw new Error('Configuration not loaded');
|
|
17
|
+
}
|
|
18
|
+
return config;
|
|
19
|
+
}
|
|
20
|
+
export function getStudioUrl(path) {
|
|
21
|
+
const studioBaseUrl = getEnv().MODELENCE_SERVICE_ENDPOINT || 'https://cloud.modelence.com';
|
|
22
|
+
return `${studioBaseUrl}${path}`;
|
|
23
|
+
}
|
|
24
|
+
export function getServerPath() {
|
|
25
|
+
const { serverDir, serverEntry } = getConfig();
|
|
26
|
+
const path = join(serverDir, serverEntry);
|
|
27
|
+
// Normalize path to use forward slashes for cross-platform compatibility
|
|
28
|
+
return path.replace(/\\/g, '/');
|
|
29
|
+
}
|
|
30
|
+
export function getPostBuildCommand() {
|
|
31
|
+
return getConfig().postBuildCommand;
|
|
32
|
+
}
|
|
33
|
+
export function getBuildPath(subPath) {
|
|
34
|
+
const buildDir = getModelencePath('build');
|
|
35
|
+
if (subPath) {
|
|
36
|
+
const path = join(buildDir, subPath);
|
|
37
|
+
return path.replace(/\\/g, '/');
|
|
38
|
+
}
|
|
39
|
+
return buildDir.replace(/\\/g, '/');
|
|
40
|
+
}
|
|
41
|
+
export function getProjectPath(subPath) {
|
|
42
|
+
const path = join(process.cwd(), subPath);
|
|
43
|
+
return path.replace(/\\/g, '/');
|
|
44
|
+
}
|
|
45
|
+
export function getModelencePath(subPath) {
|
|
46
|
+
const modelenceDir = getProjectPath('.modelence');
|
|
47
|
+
if (subPath) {
|
|
48
|
+
const path = join(modelenceDir, subPath);
|
|
49
|
+
return path.replace(/\\/g, '/');
|
|
50
|
+
}
|
|
51
|
+
return modelenceDir.replace(/\\/g, '/');
|
|
52
|
+
}
|
|
53
|
+
export async function loadEnv() {
|
|
54
|
+
try {
|
|
55
|
+
const configPath = join(process.cwd(), 'modelence.config.ts');
|
|
56
|
+
const jiti = createJiti(import.meta.url, {
|
|
57
|
+
interopDefault: true,
|
|
58
|
+
requireCache: false,
|
|
59
|
+
});
|
|
60
|
+
const configModule = await jiti.import(configPath);
|
|
61
|
+
if (typeof configModule !== 'object') {
|
|
62
|
+
throw new Error('modelence.config.ts should export an object');
|
|
63
|
+
}
|
|
64
|
+
config = z
|
|
65
|
+
.object({
|
|
66
|
+
serverDir: z.string(),
|
|
67
|
+
serverEntry: z.string(),
|
|
68
|
+
postBuildCommand: z.string().optional(),
|
|
69
|
+
})
|
|
70
|
+
.parse(configModule);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error(error);
|
|
74
|
+
throw new Error('Unable to load modelence.config.ts');
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const envContent = await fs.readFile(join(process.cwd(), '.modelence.env'), 'utf-8');
|
|
78
|
+
env = parseDotenv(envContent);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error.code === 'ENOENT') {
|
|
82
|
+
// .modelence.env is optional, may not exist in case of an offline setup
|
|
83
|
+
// Initialize with empty object to prevent "Environment variables not loaded" error
|
|
84
|
+
env = {};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/bin/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,IAAI,GAAG,GAAkC,IAAI,CAAC;AAC9C,IAAI,MAAM,GAA2B,IAAI,CAAC;AAE1C,MAAM,UAAU,MAAM;IACpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,0BAA0B,IAAI,6BAA6B,CAAC;IAC3F,OAAO,GAAG,aAAa,GAAG,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC1C,yEAAyE;IACzE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,SAAS,EAAE,CAAC,gBAAgB,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,GAAG,CAAC;aACP,MAAM,CAAC;YACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACxC,CAAC;aACD,KAAK,CAAC,YAAY,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,wEAAwE;YACxE,mFAAmF;YACnF,GAAG,GAAG,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/bin/deploy.ts"],"names":[],"mappings":"AAOA,wBAAsB,MAAM,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAyBhF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createWriteStream, promises as fs } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import archiver from 'archiver';
|
|
4
|
+
import { authenticateCli } from './auth';
|
|
5
|
+
import { getProjectPath, getStudioUrl } from './config';
|
|
6
|
+
import { build } from './build';
|
|
7
|
+
export async function deploy(options) {
|
|
8
|
+
const cwd = process.cwd();
|
|
9
|
+
const modelenceDir = join(cwd, '.modelence');
|
|
10
|
+
const bundlePath = join(modelenceDir, 'tmp', 'bundle.zip');
|
|
11
|
+
const host = options.host || getStudioUrl('');
|
|
12
|
+
await build();
|
|
13
|
+
await createBundle(bundlePath);
|
|
14
|
+
const { token } = await authenticateCli(host);
|
|
15
|
+
const { bundleName } = await uploadBundle(options.app, options.env, bundlePath, token, host);
|
|
16
|
+
await fs.unlink(bundlePath);
|
|
17
|
+
await triggerDeployment(options.app, options.env, bundleName, join('.modelence', 'build', 'app.mjs'), token, host);
|
|
18
|
+
}
|
|
19
|
+
async function createBundle(bundlePath) {
|
|
20
|
+
try {
|
|
21
|
+
await fs.unlink(bundlePath);
|
|
22
|
+
console.log('Removed existing bundle');
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
// Ignore error if file doesn't exist
|
|
26
|
+
if (error.code !== 'ENOENT') {
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
console.log('Creating deployment bundle...');
|
|
31
|
+
await fs.mkdir(join(bundlePath, '..'), { recursive: true });
|
|
32
|
+
const output = createWriteStream(bundlePath);
|
|
33
|
+
const archive = archiver('zip', {
|
|
34
|
+
zlib: { level: 9 }, // Maximum compression
|
|
35
|
+
});
|
|
36
|
+
archive.on('warning', (err) => {
|
|
37
|
+
if (err.code === 'ENOENT') {
|
|
38
|
+
console.warn('Warning:', err);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
throw err;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
archive.on('error', (err) => {
|
|
45
|
+
throw err;
|
|
46
|
+
});
|
|
47
|
+
const archiveComplete = new Promise((resolve, reject) => {
|
|
48
|
+
output.on('close', resolve);
|
|
49
|
+
output.on('error', reject);
|
|
50
|
+
archive.on('error', reject);
|
|
51
|
+
});
|
|
52
|
+
archive.pipe(output);
|
|
53
|
+
const bundleFiles = ['package.json', 'next.config.js', 'next.config.ts', 'modelence.config.ts'];
|
|
54
|
+
const bundleDirs = ['public', 'server', join('.modelence', 'build'), '.next'];
|
|
55
|
+
for (const file of bundleFiles) {
|
|
56
|
+
if (await fs
|
|
57
|
+
.access(getProjectPath(file))
|
|
58
|
+
.then(() => true)
|
|
59
|
+
.catch(() => false)) {
|
|
60
|
+
archive.file(getProjectPath(file), { name: file });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (const dir of bundleDirs) {
|
|
64
|
+
if (await fs
|
|
65
|
+
.access(getProjectPath(dir))
|
|
66
|
+
.then(() => true)
|
|
67
|
+
.catch(() => false)) {
|
|
68
|
+
archive.directory(getProjectPath(dir), dir);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
await archive.finalize();
|
|
72
|
+
await archiveComplete;
|
|
73
|
+
const stats = await fs.stat(bundlePath);
|
|
74
|
+
console.log(`Deployment bundle created at: ${bundlePath} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
75
|
+
}
|
|
76
|
+
async function uploadBundle(appAlias, envAlias, bundlePath, token, host) {
|
|
77
|
+
const response = await fetch(`${host}/api/upload-bundle`, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: {
|
|
80
|
+
'Content-Type': 'application/json',
|
|
81
|
+
Authorization: `Bearer ${token}`,
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify({
|
|
84
|
+
appAlias,
|
|
85
|
+
envAlias,
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
console.error(await response.text());
|
|
90
|
+
throw new Error(`Failed to create upload URL: ${response.statusText}`);
|
|
91
|
+
}
|
|
92
|
+
const { uploadUrl, bundleName } = await response.json();
|
|
93
|
+
const fileBuffer = await fs.readFile(bundlePath);
|
|
94
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
95
|
+
method: 'PUT',
|
|
96
|
+
body: new Uint8Array(fileBuffer),
|
|
97
|
+
headers: {
|
|
98
|
+
'Content-Type': 'application/zip',
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
if (!uploadResponse.ok) {
|
|
102
|
+
throw new Error(`Failed to upload bundle: ${uploadResponse.statusText}`);
|
|
103
|
+
}
|
|
104
|
+
console.log('Successfully uploaded bundle to Modelence Cloud');
|
|
105
|
+
console.log(`Bundle name: ${bundleName}`);
|
|
106
|
+
return { bundleName };
|
|
107
|
+
}
|
|
108
|
+
async function triggerDeployment(appAlias, envAlias, bundleName, entryPoint, token, host) {
|
|
109
|
+
const response = await fetch(`${host}/api/deploy`, {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
headers: {
|
|
112
|
+
'Content-Type': 'application/json',
|
|
113
|
+
Authorization: `Bearer ${token}`,
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify({
|
|
116
|
+
appAlias,
|
|
117
|
+
envAlias,
|
|
118
|
+
bundleName,
|
|
119
|
+
entryPoint,
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
if (!response.ok) {
|
|
123
|
+
throw new Error(`Failed to trigger deployment: ${response.statusText}`);
|
|
124
|
+
}
|
|
125
|
+
const { deploymentUrl } = await response.json();
|
|
126
|
+
console.log('Successfully triggered deployment');
|
|
127
|
+
console.log(`Follow your deployment progress at: ${deploymentUrl}`);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/bin/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/bin/dev.ts"],"names":[],"mappings":"AAIA,wBAAgB,GAAG,SAWlB"}
|
package/dist/bin/dev.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { getServerPath } from './config';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
export function dev() {
|
|
5
|
+
console.log('Starting Modelence dev server...');
|
|
6
|
+
const serverPath = getServerPath();
|
|
7
|
+
const tsxPath = path.resolve('./node_modules/.bin/tsx');
|
|
8
|
+
execSync(`"${tsxPath}" watch "${serverPath}"`, {
|
|
9
|
+
stdio: 'inherit',
|
|
10
|
+
cwd: process.cwd(),
|
|
11
|
+
env: { ...process.env, NODE_ENV: 'development' },
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/bin/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,GAAG;IACjB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAExD,QAAQ,CAAC,IAAI,OAAO,YAAY,UAAU,GAAG,EAAE;QAC7C,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE;KACjD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelence.d.ts","sourceRoot":"","sources":["../../src/bin/modelence.ts"],"names":[],"mappings":""}
|