hazo_auth 5.1.40 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/SETUP_CHECKLIST.md +46 -0
  2. package/cli-src/lib/auth/ensure_anon_id.server.ts +88 -0
  3. package/cli-src/lib/auth/index.ts +3 -0
  4. package/cli-src/lib/cookies_config.edge.ts +1 -0
  5. package/cli-src/lib/cookies_config.server.ts +1 -0
  6. package/cli-src/lib/hazo_connect_setup.server.ts +0 -8
  7. package/cli-src/lib/services/email_service.ts +136 -289
  8. package/cli-src/lib/services/email_template_manifest.ts +104 -0
  9. package/cli-src/lib/services/email_templates/email_verification.html +18 -0
  10. package/cli-src/lib/services/email_templates/email_verification.txt +9 -0
  11. package/cli-src/lib/services/email_templates/forgot_password.html +18 -0
  12. package/cli-src/lib/services/email_templates/forgot_password.txt +9 -0
  13. package/cli-src/lib/services/email_templates/password_changed.html +14 -0
  14. package/cli-src/lib/services/email_templates/password_changed.txt +9 -0
  15. package/cli-src/lib/services/session_token_service.ts +2 -2
  16. package/cli-src/lib/ui_shell_config.server.ts +6 -2
  17. package/dist/components/layouts/login/index.d.ts +16 -3
  18. package/dist/components/layouts/login/index.d.ts.map +1 -1
  19. package/dist/components/layouts/login/index.js +49 -5
  20. package/dist/components/layouts/register/index.d.ts +7 -3
  21. package/dist/components/layouts/register/index.d.ts.map +1 -1
  22. package/dist/components/layouts/register/index.js +36 -3
  23. package/dist/components/layouts/shared/components/floating_home_link.d.ts +20 -0
  24. package/dist/components/layouts/shared/components/floating_home_link.d.ts.map +1 -0
  25. package/dist/components/layouts/shared/components/floating_home_link.js +29 -0
  26. package/dist/components/layouts/shared/components/profile_pic_menu.d.ts +8 -0
  27. package/dist/components/layouts/shared/components/profile_pic_menu.d.ts.map +1 -1
  28. package/dist/components/layouts/shared/components/profile_pic_menu.js +18 -8
  29. package/dist/components/layouts/shared/index.d.ts +2 -0
  30. package/dist/components/layouts/shared/index.d.ts.map +1 -1
  31. package/dist/components/layouts/shared/index.js +1 -0
  32. package/dist/lib/auth/ensure_anon_id.server.d.ts +21 -0
  33. package/dist/lib/auth/ensure_anon_id.server.d.ts.map +1 -0
  34. package/dist/lib/auth/ensure_anon_id.server.js +73 -0
  35. package/dist/lib/auth/index.d.ts +1 -0
  36. package/dist/lib/auth/index.d.ts.map +1 -1
  37. package/dist/lib/auth/index.js +2 -0
  38. package/dist/lib/cookies_config.edge.d.ts +1 -0
  39. package/dist/lib/cookies_config.edge.d.ts.map +1 -1
  40. package/dist/lib/cookies_config.edge.js +1 -0
  41. package/dist/lib/cookies_config.server.d.ts +1 -0
  42. package/dist/lib/cookies_config.server.d.ts.map +1 -1
  43. package/dist/lib/cookies_config.server.js +1 -0
  44. package/dist/lib/hazo_connect_setup.server.d.ts.map +1 -1
  45. package/dist/lib/hazo_connect_setup.server.js +0 -8
  46. package/dist/lib/services/email_service.d.ts +17 -4
  47. package/dist/lib/services/email_service.d.ts.map +1 -1
  48. package/dist/lib/services/email_service.js +93 -221
  49. package/dist/lib/services/email_template_manifest.d.ts +11 -0
  50. package/dist/lib/services/email_template_manifest.d.ts.map +1 -0
  51. package/dist/lib/services/email_template_manifest.js +95 -0
  52. package/dist/lib/services/email_templates/email_verification.html +18 -0
  53. package/dist/lib/services/email_templates/email_verification.txt +9 -0
  54. package/dist/lib/services/email_templates/forgot_password.html +18 -0
  55. package/dist/lib/services/email_templates/forgot_password.txt +9 -0
  56. package/dist/lib/services/email_templates/password_changed.html +14 -0
  57. package/dist/lib/services/email_templates/password_changed.txt +9 -0
  58. package/dist/lib/services/session_token_service.js +2 -2
  59. package/dist/lib/ui_shell_config.server.d.ts.map +1 -1
  60. package/dist/lib/ui_shell_config.server.js +6 -2
  61. package/dist/server/routes/oauth_google_callback.d.ts.map +1 -1
  62. package/dist/server/routes/oauth_google_callback.js +33 -6
  63. package/dist/server-lib.d.ts +1 -0
  64. package/dist/server-lib.d.ts.map +1 -1
  65. package/dist/server-lib.js +1 -0
  66. package/dist/server_pages/login.d.ts +13 -1
  67. package/dist/server_pages/login.d.ts.map +1 -1
  68. package/dist/server_pages/login.js +25 -9
  69. package/dist/server_pages/login_client_wrapper.d.ts +6 -4
  70. package/dist/server_pages/login_client_wrapper.d.ts.map +1 -1
  71. package/dist/server_pages/login_client_wrapper.js +2 -2
  72. package/dist/server_pages/register.d.ts +7 -1
  73. package/dist/server_pages/register.d.ts.map +1 -1
  74. package/dist/server_pages/register.js +18 -9
  75. package/dist/server_pages/register_client_wrapper.d.ts +6 -4
  76. package/dist/server_pages/register_client_wrapper.d.ts.map +1 -1
  77. package/dist/server_pages/register_client_wrapper.js +2 -2
  78. package/package.json +26 -20
  79. package/cli-src/assets/images/new_firm_default.jpg +0 -0
  80. package/cli-src/lib/auth/org_cache.ts +0 -148
  81. package/cli-src/lib/index.ts +0 -48
  82. package/cli-src/lib/services/org_service.ts +0 -965
  83. package/cli-src/lib/services/scope_labels_service.ts +0 -348
@@ -1,148 +0,0 @@
1
- // file_description: LRU cache implementation for organization lookups with TTL and size limits
2
- // section: types
3
-
4
- /**
5
- * Cached organization info for hazo_get_auth
6
- */
7
- export type OrgCacheEntry = {
8
- org_id: string;
9
- org_name: string;
10
- parent_org_id: string | null;
11
- parent_org_name: string | null;
12
- root_org_id: string | null;
13
- root_org_name: string | null;
14
- };
15
-
16
- /**
17
- * Internal cache entry with metadata
18
- */
19
- type CacheItem = {
20
- entry: OrgCacheEntry;
21
- timestamp: number; // Unix timestamp in milliseconds
22
- };
23
-
24
- /**
25
- * LRU cache implementation for organization lookups
26
- * Uses Map to maintain insertion order for LRU eviction
27
- */
28
- class OrgCache {
29
- private cache: Map<string, CacheItem>;
30
- private max_size: number;
31
- private ttl_ms: number;
32
-
33
- constructor(max_size: number, ttl_minutes: number) {
34
- this.cache = new Map();
35
- this.max_size = max_size;
36
- this.ttl_ms = ttl_minutes * 60 * 1000;
37
- }
38
-
39
- /**
40
- * Gets a cache entry for an organization
41
- * Returns undefined if not found or expired
42
- * @param org_id - Organization ID to look up
43
- * @returns Cache entry or undefined
44
- */
45
- get(org_id: string): OrgCacheEntry | undefined {
46
- const item = this.cache.get(org_id);
47
-
48
- if (!item) {
49
- return undefined;
50
- }
51
-
52
- const now = Date.now();
53
- const age = now - item.timestamp;
54
-
55
- // Check if entry is expired (TTL)
56
- if (age > this.ttl_ms) {
57
- this.cache.delete(org_id);
58
- return undefined;
59
- }
60
-
61
- // Move to end (most recently used)
62
- this.cache.delete(org_id);
63
- this.cache.set(org_id, item);
64
-
65
- return item.entry;
66
- }
67
-
68
- /**
69
- * Sets a cache entry for an organization
70
- * Evicts least recently used entries if cache is full
71
- * @param org_id - Organization ID
72
- * @param entry - Organization cache entry
73
- */
74
- set(org_id: string, entry: OrgCacheEntry): void {
75
- // Evict LRU entries if cache is full
76
- while (this.cache.size >= this.max_size) {
77
- const first_key = this.cache.keys().next().value;
78
- if (first_key) {
79
- this.cache.delete(first_key);
80
- } else {
81
- break;
82
- }
83
- }
84
-
85
- const item: CacheItem = {
86
- entry,
87
- timestamp: Date.now(),
88
- };
89
-
90
- this.cache.set(org_id, item);
91
- }
92
-
93
- /**
94
- * Invalidates cache for a specific organization
95
- * @param org_id - Organization ID to invalidate
96
- */
97
- invalidate(org_id: string): void {
98
- this.cache.delete(org_id);
99
- }
100
-
101
- /**
102
- * Invalidates all cache entries
103
- */
104
- invalidate_all(): void {
105
- this.cache.clear();
106
- }
107
-
108
- /**
109
- * Gets cache statistics
110
- * @returns Object with cache size and max size
111
- */
112
- get_stats(): {
113
- size: number;
114
- max_size: number;
115
- } {
116
- return {
117
- size: this.cache.size,
118
- max_size: this.max_size,
119
- };
120
- }
121
- }
122
-
123
- // section: singleton
124
- // Global org cache instance (initialized with defaults, will be configured on first use)
125
- let org_cache_instance: OrgCache | null = null;
126
-
127
- /**
128
- * Gets or creates the global org cache instance
129
- * @param max_size - Maximum cache size (default: 1000)
130
- * @param ttl_minutes - TTL in minutes (default: 15)
131
- * @returns Org cache instance
132
- */
133
- export function get_org_cache(
134
- max_size: number = 1000,
135
- ttl_minutes: number = 15,
136
- ): OrgCache {
137
- if (!org_cache_instance) {
138
- org_cache_instance = new OrgCache(max_size, ttl_minutes);
139
- }
140
- return org_cache_instance;
141
- }
142
-
143
- /**
144
- * Resets the global org cache instance (useful for testing)
145
- */
146
- export function reset_org_cache(): void {
147
- org_cache_instance = null;
148
- }
@@ -1,48 +0,0 @@
1
- // file_description: barrel export for lib utilities
2
- // section: auth_exports
3
- export * from "./auth/index.js";
4
-
5
- // section: service_exports
6
- export * from "./services/index.js";
7
-
8
- // section: utility_exports
9
- export { cn, merge_class_names } from "./utils.js";
10
-
11
- // section: config_exports
12
- export { get_config_value, get_config_number, get_config_boolean, get_config_array, read_config_section } from "./config/config_loader.server.js";
13
-
14
- // section: hazo_connect_exports
15
- export { create_sqlite_hazo_connect } from "./hazo_connect_setup.js";
16
- export { get_hazo_connect_instance } from "./hazo_connect_instance.server.js";
17
-
18
- // section: logger_exports
19
- export { create_app_logger } from "./app_logger.js";
20
-
21
- // section: config_server_exports
22
- export { get_login_config } from "./login_config.server.js";
23
- export { get_register_config } from "./register_config.server.js";
24
- export { get_forgot_password_config } from "./forgot_password_config.server.js";
25
- export { get_reset_password_config } from "./reset_password_config.server.js";
26
- export { get_email_verification_config } from "./email_verification_config.server.js";
27
- export { get_my_settings_config } from "./my_settings_config.server.js";
28
- export { get_user_management_config } from "./user_management_config.server.js";
29
- export { get_profile_picture_config } from "./profile_picture_config.server.js";
30
- export { get_profile_pic_menu_config } from "./profile_pic_menu_config.server.js";
31
- export { get_already_logged_in_config } from "./already_logged_in_config.server.js";
32
- export { get_ui_shell_config } from "./ui_shell_config.server.js";
33
- export { get_ui_sizes_config } from "./ui_sizes_config.server.js";
34
- export { get_auth_utility_config } from "./auth_utility_config.server.js";
35
- export { get_password_requirements_config } from "./password_requirements_config.server.js";
36
- export { get_messages_config } from "./messages_config.server.js";
37
- export { get_user_fields_config } from "./user_fields_config.server.js";
38
- export { get_file_types_config } from "./file_types_config.server.js";
39
- export { get_oauth_config, is_google_oauth_enabled, is_email_password_enabled } from "./oauth_config.server.js";
40
- export type { OAuthConfig } from "./oauth_config.server";
41
- export { get_branding_config, is_branding_enabled, is_allowed_logo_format, get_max_logo_size_bytes } from "./branding_config.server.js";
42
- export type { FirmBrandingConfig } from "./branding_config.server";
43
-
44
- // section: util_exports
45
- export { sanitize_error_for_user } from "./utils/error_sanitizer.js";
46
- export type { ErrorSanitizationOptions } from "./utils/error_sanitizer";
47
- export * from "./utils/api_route_helpers.js";
48
-