hazo_auth 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +65 -19
  2. package/SETUP_CHECKLIST.md +136 -65
  3. package/dist/app/api/hazo_auth/library_photo/[category]/[filename]/route.d.ts +9 -0
  4. package/dist/app/api/hazo_auth/library_photo/[category]/[filename]/route.d.ts.map +1 -0
  5. package/dist/app/api/hazo_auth/library_photo/[category]/[filename]/route.js +82 -0
  6. package/dist/app/api/hazo_auth/library_photos/route.d.ts +9 -0
  7. package/dist/app/api/hazo_auth/library_photos/route.d.ts.map +1 -1
  8. package/dist/app/api/hazo_auth/library_photos/route.js +31 -6
  9. package/dist/cli/generate.d.ts +6 -1
  10. package/dist/cli/generate.d.ts.map +1 -1
  11. package/dist/cli/generate.js +101 -34
  12. package/dist/cli/index.js +64 -11
  13. package/dist/cli/init.d.ts +2 -0
  14. package/dist/cli/init.d.ts.map +1 -0
  15. package/dist/cli/init.js +201 -0
  16. package/dist/lib/services/profile_picture_service.d.ts +34 -2
  17. package/dist/lib/services/profile_picture_service.d.ts.map +1 -1
  18. package/dist/lib/services/profile_picture_service.js +157 -15
  19. package/dist/page_components/forgot_password.d.ts +19 -0
  20. package/dist/page_components/forgot_password.d.ts.map +1 -0
  21. package/dist/page_components/forgot_password.js +36 -0
  22. package/dist/page_components/index.d.ts +7 -0
  23. package/dist/page_components/index.d.ts.map +1 -0
  24. package/dist/page_components/index.js +9 -0
  25. package/dist/page_components/login.d.ts +26 -0
  26. package/dist/page_components/login.d.ts.map +1 -0
  27. package/dist/page_components/login.js +40 -0
  28. package/dist/page_components/my_settings.d.ts +64 -0
  29. package/dist/page_components/my_settings.d.ts.map +1 -0
  30. package/dist/page_components/my_settings.js +67 -0
  31. package/dist/page_components/register.d.ts +25 -0
  32. package/dist/page_components/register.d.ts.map +1 -0
  33. package/dist/page_components/register.js +43 -0
  34. package/dist/page_components/reset_password.d.ts +25 -0
  35. package/dist/page_components/reset_password.d.ts.map +1 -0
  36. package/dist/page_components/reset_password.js +43 -0
  37. package/dist/page_components/verify_email.d.ts +21 -0
  38. package/dist/page_components/verify_email.d.ts.map +1 -0
  39. package/dist/page_components/verify_email.js +36 -0
  40. package/dist/server/routes/index.d.ts +1 -0
  41. package/dist/server/routes/index.d.ts.map +1 -1
  42. package/dist/server/routes/index.js +1 -0
  43. package/dist/server/routes/library_photo.d.ts +2 -0
  44. package/dist/server/routes/library_photo.d.ts.map +1 -0
  45. package/dist/server/routes/library_photo.js +3 -0
  46. package/package.json +29 -1
@@ -0,0 +1,43 @@
1
+ // file_description: zero-config reset password page component for hazo_auth
2
+ // Consumers can use this directly without needing to configure props
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ // section: imports
6
+ import { useEffect, useState } from "react";
7
+ import reset_password_layout from "../components/layouts/reset_password";
8
+ import { createLayoutDataClient } from "../components/layouts/shared/data/layout_data_client";
9
+ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup";
10
+ // section: constants
11
+ const DEFAULT_IMAGE_SRC = "/globe.svg";
12
+ const DEFAULT_IMAGE_ALT = "Illustration of a globe representing secure authentication workflows";
13
+ const DEFAULT_IMAGE_BG = "#e2e8f0";
14
+ const DEFAULT_PASSWORD_REQUIREMENTS = {
15
+ minimum_length: 8,
16
+ require_uppercase: true,
17
+ require_lowercase: true,
18
+ require_number: true,
19
+ require_special: false,
20
+ };
21
+ // section: component
22
+ /**
23
+ * Zero-config reset password page component
24
+ * Uses sensible defaults and can be customized via props
25
+ * @param props - Optional configuration overrides
26
+ * @returns Reset password page component
27
+ */
28
+ export function ResetPasswordPage({ errorMessage = "Your password reset link has expired or is invalid", successMessage = "Password reset successful! You can now log in with your new password.", loginPath = "/hazo_auth/login", forgotPasswordPath = "/hazo_auth/forgot_password", passwordRequirements = DEFAULT_PASSWORD_REQUIREMENTS, alreadyLoggedInMessage = "You are already logged in", showLogoutButton = true, showReturnHomeButton = false, returnHomeButtonLabel = "Return home", returnHomePath = "/", imageSrc = DEFAULT_IMAGE_SRC, imageAlt = DEFAULT_IMAGE_ALT, imageBackgroundColor = DEFAULT_IMAGE_BG, } = {}) {
29
+ const [dataClient, setDataClient] = useState(null);
30
+ useEffect(() => {
31
+ // Initialize hazo_connect on client side
32
+ const hazoConnect = create_sqlite_hazo_connect();
33
+ const client = createLayoutDataClient(hazoConnect);
34
+ setDataClient(client);
35
+ }, []);
36
+ // Show loading state while initializing
37
+ if (!dataClient) {
38
+ return (_jsx("div", { className: "cls_reset_password_page_loading flex items-center justify-center min-h-screen", children: _jsx("div", { className: "text-slate-600 animate-pulse", children: "Loading..." }) }));
39
+ }
40
+ const ResetPasswordLayout = reset_password_layout;
41
+ return (_jsx(ResetPasswordLayout, { image_src: imageSrc, image_alt: imageAlt, image_background_color: imageBackgroundColor, data_client: dataClient, errorMessage: errorMessage, successMessage: successMessage, password_requirements: passwordRequirements, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath }));
42
+ }
43
+ export default ResetPasswordPage;
@@ -0,0 +1,21 @@
1
+ export type VerifyEmailPageProps = {
2
+ alreadyLoggedInMessage?: string;
3
+ showLogoutButton?: boolean;
4
+ showReturnHomeButton?: boolean;
5
+ returnHomeButtonLabel?: string;
6
+ returnHomePath?: string;
7
+ redirectDelay?: number;
8
+ loginPath?: string;
9
+ imageSrc?: string;
10
+ imageAlt?: string;
11
+ imageBackgroundColor?: string;
12
+ };
13
+ /**
14
+ * Zero-config verify email page component
15
+ * Uses sensible defaults and can be customized via props
16
+ * @param props - Optional configuration overrides
17
+ * @returns Verify email page component
18
+ */
19
+ export declare function VerifyEmailPage({ alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, redirectDelay, loginPath, imageSrc, imageAlt, imageBackgroundColor, }?: VerifyEmailPageProps): import("react/jsx-runtime").JSX.Element;
20
+ export default VerifyEmailPage;
21
+ //# sourceMappingURL=verify_email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify_email.d.ts","sourceRoot":"","sources":["../../src/page_components/verify_email.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAGF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,sBAAoD,EACpD,gBAAuB,EACvB,oBAA4B,EAC5B,qBAAqC,EACrC,cAAoB,EACpB,aAAoB,EACpB,SAA8B,EAC9B,QAA4B,EAC5B,QAA4B,EAC5B,oBAAuC,GACxC,GAAE,oBAAyB,2CAqC3B;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,36 @@
1
+ // file_description: zero-config verify email page component for hazo_auth
2
+ // Consumers can use this directly without needing to configure props
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ // section: imports
6
+ import { useEffect, useState } from "react";
7
+ import email_verification_layout from "../components/layouts/email_verification";
8
+ import { createLayoutDataClient } from "../components/layouts/shared/data/layout_data_client";
9
+ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup";
10
+ // section: constants
11
+ const DEFAULT_IMAGE_SRC = "/globe.svg";
12
+ const DEFAULT_IMAGE_ALT = "Illustration of a globe representing secure authentication workflows";
13
+ const DEFAULT_IMAGE_BG = "#e2e8f0";
14
+ // section: component
15
+ /**
16
+ * Zero-config verify email page component
17
+ * Uses sensible defaults and can be customized via props
18
+ * @param props - Optional configuration overrides
19
+ * @returns Verify email page component
20
+ */
21
+ export function VerifyEmailPage({ alreadyLoggedInMessage = "You are already logged in", showLogoutButton = true, showReturnHomeButton = false, returnHomeButtonLabel = "Return home", returnHomePath = "/", redirectDelay = 3000, loginPath = "/hazo_auth/login", imageSrc = DEFAULT_IMAGE_SRC, imageAlt = DEFAULT_IMAGE_ALT, imageBackgroundColor = DEFAULT_IMAGE_BG, } = {}) {
22
+ const [dataClient, setDataClient] = useState(null);
23
+ useEffect(() => {
24
+ // Initialize hazo_connect on client side
25
+ const hazoConnect = create_sqlite_hazo_connect();
26
+ const client = createLayoutDataClient(hazoConnect);
27
+ setDataClient(client);
28
+ }, []);
29
+ // Show loading state while initializing
30
+ if (!dataClient) {
31
+ return (_jsx("div", { className: "cls_verify_email_page_loading flex items-center justify-center min-h-screen", children: _jsx("div", { className: "text-slate-600 animate-pulse", children: "Loading..." }) }));
32
+ }
33
+ const EmailVerificationLayout = email_verification_layout;
34
+ return (_jsx(EmailVerificationLayout, { image_src: imageSrc, image_alt: imageAlt, image_background_color: imageBackgroundColor, data_client: dataClient, already_logged_in_message: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, redirect_delay: redirectDelay, login_path: loginPath }));
35
+ }
36
+ export default VerifyEmailPage;
@@ -12,6 +12,7 @@ export { PATCH as updateUserPATCH } from "./update_user.js";
12
12
  export { POST as uploadProfilePicturePOST } from "./upload_profile_picture.js";
13
13
  export { DELETE as removeProfilePictureDELETE } from "./remove_profile_picture.js";
14
14
  export { GET as libraryPhotosGET } from "./library_photos.js";
15
+ export { GET as libraryPhotoGET } from "./library_photo.js";
15
16
  export { GET as profilePictureFilenameGET } from "./profile_picture_filename.js";
16
17
  export { POST as getAuthPOST } from "./get_auth.js";
17
18
  export { POST as invalidateCachePOST } from "./invalidate_cache.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,GAAG,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,IAAI,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,MAAM,IAAI,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,GAAG,IAAI,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAGjF,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,GAAG,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,IAAI,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,MAAM,IAAI,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,GAAG,IAAI,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAGjF,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -18,6 +18,7 @@ export { PATCH as updateUserPATCH } from "./update_user.js";
18
18
  export { POST as uploadProfilePicturePOST } from "./upload_profile_picture.js";
19
19
  export { DELETE as removeProfilePictureDELETE } from "./remove_profile_picture.js";
20
20
  export { GET as libraryPhotosGET } from "./library_photos.js";
21
+ export { GET as libraryPhotoGET } from "./library_photo.js";
21
22
  export { GET as profilePictureFilenameGET } from "./profile_picture_filename.js";
22
23
  // Auth utility routes
23
24
  export { POST as getAuthPOST } from "./get_auth.js";
@@ -0,0 +1,2 @@
1
+ export { GET } from "../../app/api/hazo_auth/library_photo/[category]/[filename]/route";
2
+ //# sourceMappingURL=library_photo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library_photo.d.ts","sourceRoot":"","sources":["../../../src/server/routes/library_photo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,mEAAmE,CAAC"}
@@ -0,0 +1,3 @@
1
+ // file_description: server route export for library photo serving
2
+ // Serves library photos from node_modules when not copied to project's public folder
3
+ export { GET } from "../../app/api/hazo_auth/library_photo/[category]/[filename]/route";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_auth",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -55,6 +55,34 @@
55
55
  "./server/routes": {
56
56
  "types": "./dist/server/routes/index.d.ts",
57
57
  "import": "./dist/server/routes/index.js"
58
+ },
59
+ "./pages": {
60
+ "types": "./dist/page_components/index.d.ts",
61
+ "import": "./dist/page_components/index.js"
62
+ },
63
+ "./pages/login": {
64
+ "types": "./dist/page_components/login.d.ts",
65
+ "import": "./dist/page_components/login.js"
66
+ },
67
+ "./pages/register": {
68
+ "types": "./dist/page_components/register.d.ts",
69
+ "import": "./dist/page_components/register.js"
70
+ },
71
+ "./pages/forgot_password": {
72
+ "types": "./dist/page_components/forgot_password.d.ts",
73
+ "import": "./dist/page_components/forgot_password.js"
74
+ },
75
+ "./pages/reset_password": {
76
+ "types": "./dist/page_components/reset_password.d.ts",
77
+ "import": "./dist/page_components/reset_password.js"
78
+ },
79
+ "./pages/verify_email": {
80
+ "types": "./dist/page_components/verify_email.d.ts",
81
+ "import": "./dist/page_components/verify_email.js"
82
+ },
83
+ "./pages/my_settings": {
84
+ "types": "./dist/page_components/my_settings.d.ts",
85
+ "import": "./dist/page_components/my_settings.js"
58
86
  }
59
87
  },
60
88
  "files": [