@hexclave/shared 1.0.13 → 1.0.15

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 (108) hide show
  1. package/dist/ai/unified-prompts/reminders.js +1 -1
  2. package/dist/apps/apps-config.d.ts +6 -0
  3. package/dist/apps/apps-config.js +6 -0
  4. package/dist/apps/apps-config.js.map +1 -1
  5. package/dist/config/schema.d.ts +170 -170
  6. package/dist/config-authoring.d.ts.map +1 -1
  7. package/dist/config-authoring.js.map +1 -1
  8. package/dist/config-authoring.test.js +1 -1
  9. package/dist/config-authoring.test.js.map +1 -1
  10. package/dist/config-rendering.d.ts +2 -2
  11. package/dist/config-rendering.js +16 -0
  12. package/dist/config-rendering.js.map +1 -1
  13. package/dist/esm/ai/unified-prompts/reminders.js +1 -1
  14. package/dist/esm/apps/apps-config.d.ts +6 -0
  15. package/dist/esm/apps/apps-config.js +6 -0
  16. package/dist/esm/apps/apps-config.js.map +1 -1
  17. package/dist/esm/config/schema.d.ts +170 -170
  18. package/dist/esm/config-authoring.d.ts.map +1 -1
  19. package/dist/esm/config-authoring.js.map +1 -1
  20. package/dist/esm/config-authoring.test.js +1 -1
  21. package/dist/esm/config-authoring.test.js.map +1 -1
  22. package/dist/esm/config-rendering.d.ts +2 -2
  23. package/dist/esm/config-rendering.js +16 -2
  24. package/dist/esm/config-rendering.js.map +1 -1
  25. package/dist/esm/hexclave-config-file.d.ts +24 -1
  26. package/dist/esm/hexclave-config-file.d.ts.map +1 -1
  27. package/dist/esm/hexclave-config-file.js +69 -2
  28. package/dist/esm/hexclave-config-file.js.map +1 -1
  29. package/dist/esm/interface/admin-interface.d.ts +19 -1
  30. package/dist/esm/interface/admin-interface.d.ts.map +1 -1
  31. package/dist/esm/interface/admin-interface.js +14 -0
  32. package/dist/esm/interface/admin-interface.js.map +1 -1
  33. package/dist/esm/interface/admin-metrics.d.ts +99 -5
  34. package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
  35. package/dist/esm/interface/admin-metrics.js +61 -1
  36. package/dist/esm/interface/admin-metrics.js.map +1 -1
  37. package/dist/esm/interface/conversations.d.ts +35 -35
  38. package/dist/esm/interface/crud/current-user.d.ts +2 -2
  39. package/dist/esm/interface/crud/email-outbox.d.ts +66 -66
  40. package/dist/esm/interface/crud/invoices.d.ts +2 -2
  41. package/dist/esm/interface/crud/projects.d.ts +35 -35
  42. package/dist/esm/interface/crud/team-member-profiles.d.ts +10 -10
  43. package/dist/esm/interface/crud/users.d.ts +10 -10
  44. package/dist/esm/interface/webhooks.d.ts +2 -2
  45. package/dist/esm/utils/analytics-clickmap-overlay.d.ts +18 -0
  46. package/dist/esm/utils/analytics-clickmap-overlay.d.ts.map +1 -0
  47. package/dist/esm/utils/analytics-clickmap-overlay.js +19 -0
  48. package/dist/esm/utils/analytics-clickmap-overlay.js.map +1 -0
  49. package/dist/esm/utils/dev-tool.d.ts +31 -0
  50. package/dist/esm/utils/dev-tool.d.ts.map +1 -0
  51. package/dist/esm/utils/dev-tool.js +32 -0
  52. package/dist/esm/utils/dev-tool.js.map +1 -0
  53. package/dist/esm/utils/dom.d.ts +7 -1
  54. package/dist/esm/utils/dom.d.ts.map +1 -1
  55. package/dist/esm/utils/dom.js +20 -1
  56. package/dist/esm/utils/dom.js.map +1 -1
  57. package/dist/esm/utils/elements-chain.d.ts +38 -0
  58. package/dist/esm/utils/elements-chain.d.ts.map +1 -0
  59. package/dist/esm/utils/elements-chain.js +297 -0
  60. package/dist/esm/utils/elements-chain.js.map +1 -0
  61. package/dist/hexclave-config-file.d.ts +24 -1
  62. package/dist/hexclave-config-file.d.ts.map +1 -1
  63. package/dist/hexclave-config-file.js +71 -1
  64. package/dist/hexclave-config-file.js.map +1 -1
  65. package/dist/interface/admin-interface.d.ts +19 -1
  66. package/dist/interface/admin-interface.d.ts.map +1 -1
  67. package/dist/interface/admin-interface.js +14 -0
  68. package/dist/interface/admin-interface.js.map +1 -1
  69. package/dist/interface/admin-metrics.d.ts +99 -5
  70. package/dist/interface/admin-metrics.d.ts.map +1 -1
  71. package/dist/interface/admin-metrics.js +65 -0
  72. package/dist/interface/admin-metrics.js.map +1 -1
  73. package/dist/interface/conversations.d.ts +35 -35
  74. package/dist/interface/crud/current-user.d.ts +2 -2
  75. package/dist/interface/crud/email-outbox.d.ts +66 -66
  76. package/dist/interface/crud/invoices.d.ts +2 -2
  77. package/dist/interface/crud/projects.d.ts +35 -35
  78. package/dist/interface/crud/team-member-profiles.d.ts +10 -10
  79. package/dist/interface/crud/users.d.ts +10 -10
  80. package/dist/interface/webhooks.d.ts +2 -2
  81. package/dist/utils/analytics-clickmap-overlay.d.ts +18 -0
  82. package/dist/utils/analytics-clickmap-overlay.d.ts.map +1 -0
  83. package/dist/utils/analytics-clickmap-overlay.js +23 -0
  84. package/dist/utils/analytics-clickmap-overlay.js.map +1 -0
  85. package/dist/utils/dev-tool.d.ts +31 -0
  86. package/dist/utils/dev-tool.d.ts.map +1 -0
  87. package/dist/utils/dev-tool.js +37 -0
  88. package/dist/utils/dev-tool.js.map +1 -0
  89. package/dist/utils/dom.d.ts +7 -1
  90. package/dist/utils/dom.d.ts.map +1 -1
  91. package/dist/utils/dom.js +20 -0
  92. package/dist/utils/dom.js.map +1 -1
  93. package/dist/utils/elements-chain.d.ts +38 -0
  94. package/dist/utils/elements-chain.d.ts.map +1 -0
  95. package/dist/utils/elements-chain.js +304 -0
  96. package/dist/utils/elements-chain.js.map +1 -0
  97. package/package.json +1 -1
  98. package/src/apps/apps-config.ts +6 -0
  99. package/src/config-authoring.test.ts +1 -1
  100. package/src/config-authoring.ts +6 -6
  101. package/src/config-rendering.ts +24 -2
  102. package/src/hexclave-config-file.ts +90 -1
  103. package/src/interface/admin-interface.ts +43 -1
  104. package/src/interface/admin-metrics.ts +92 -4
  105. package/src/utils/analytics-clickmap-overlay.tsx +15 -0
  106. package/src/utils/dev-tool.tsx +30 -0
  107. package/src/utils/dom.tsx +42 -0
  108. package/src/utils/elements-chain.tsx +349 -0
@@ -52,15 +52,11 @@ declare const projectsCrudAdminReadSchema: yup$1.ObjectSchema<{
52
52
  onboarding_state: {
53
53
  selected_config_choice: "create-new" | "link-existing";
54
54
  selected_apps: string[];
55
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
55
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
56
56
  selected_email_theme_id: string | null;
57
57
  selected_payments_country: "US" | "OTHER";
58
58
  } | null | undefined;
59
59
  config: {
60
- domains: {
61
- domain: string;
62
- handler_path: string;
63
- }[];
64
60
  oauth_providers: {
65
61
  client_id?: string | undefined;
66
62
  client_secret?: string | undefined;
@@ -71,6 +67,10 @@ declare const projectsCrudAdminReadSchema: yup$1.ObjectSchema<{
71
67
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
72
68
  provider_config_id: string;
73
69
  }[];
70
+ domains: {
71
+ domain: string;
72
+ handler_path: string;
73
+ }[];
74
74
  allow_localhost: boolean;
75
75
  sign_up_enabled: boolean;
76
76
  credential_enabled: boolean;
@@ -205,15 +205,11 @@ declare const projectsCrudAdminUpdateSchema: yup$1.ObjectSchema<{
205
205
  onboarding_state: {
206
206
  selected_config_choice: "create-new" | "link-existing";
207
207
  selected_apps: string[];
208
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
208
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
209
209
  selected_email_theme_id: string | null;
210
210
  selected_payments_country: "US" | "OTHER";
211
211
  } | null | undefined;
212
212
  config: {
213
- domains?: {
214
- domain: string;
215
- handler_path: string;
216
- }[] | undefined;
217
213
  oauth_providers?: {
218
214
  client_id?: string | undefined;
219
215
  client_secret?: string | undefined;
@@ -223,6 +219,10 @@ declare const projectsCrudAdminUpdateSchema: yup$1.ObjectSchema<{
223
219
  type: "shared" | "standard";
224
220
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
225
221
  }[] | undefined;
222
+ domains?: {
223
+ domain: string;
224
+ handler_path: string;
225
+ }[] | undefined;
226
226
  allow_localhost?: boolean | undefined;
227
227
  sign_up_enabled?: boolean | undefined;
228
228
  credential_enabled?: boolean | undefined;
@@ -285,15 +285,11 @@ declare const projectsCrudAdminCreateSchema: yup$1.ObjectSchema<{
285
285
  onboarding_state: {
286
286
  selected_config_choice: "create-new" | "link-existing";
287
287
  selected_apps: string[];
288
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
288
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
289
289
  selected_email_theme_id: string | null;
290
290
  selected_payments_country: "US" | "OTHER";
291
291
  } | null | undefined;
292
292
  config: {
293
- domains?: {
294
- domain: string;
295
- handler_path: string;
296
- }[] | undefined;
297
293
  oauth_providers?: {
298
294
  client_id?: string | undefined;
299
295
  client_secret?: string | undefined;
@@ -303,6 +299,10 @@ declare const projectsCrudAdminCreateSchema: yup$1.ObjectSchema<{
303
299
  type: "shared" | "standard";
304
300
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
305
301
  }[] | undefined;
302
+ domains?: {
303
+ domain: string;
304
+ handler_path: string;
305
+ }[] | undefined;
306
306
  allow_localhost?: boolean | undefined;
307
307
  sign_up_enabled?: boolean | undefined;
308
308
  credential_enabled?: boolean | undefined;
@@ -425,15 +425,11 @@ declare const projectsCrud: ______crud0.CrudSchemaFromOptions<{
425
425
  onboarding_state: {
426
426
  selected_config_choice: "create-new" | "link-existing";
427
427
  selected_apps: string[];
428
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
428
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
429
429
  selected_email_theme_id: string | null;
430
430
  selected_payments_country: "US" | "OTHER";
431
431
  } | null | undefined;
432
432
  config: {
433
- domains: {
434
- domain: string;
435
- handler_path: string;
436
- }[];
437
433
  oauth_providers: {
438
434
  client_id?: string | undefined;
439
435
  client_secret?: string | undefined;
@@ -444,6 +440,10 @@ declare const projectsCrud: ______crud0.CrudSchemaFromOptions<{
444
440
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
445
441
  provider_config_id: string;
446
442
  }[];
443
+ domains: {
444
+ domain: string;
445
+ handler_path: string;
446
+ }[];
447
447
  allow_localhost: boolean;
448
448
  sign_up_enabled: boolean;
449
449
  credential_enabled: boolean;
@@ -540,15 +540,11 @@ declare const projectsCrud: ______crud0.CrudSchemaFromOptions<{
540
540
  onboarding_state: {
541
541
  selected_config_choice: "create-new" | "link-existing";
542
542
  selected_apps: string[];
543
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
543
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
544
544
  selected_email_theme_id: string | null;
545
545
  selected_payments_country: "US" | "OTHER";
546
546
  } | null | undefined;
547
547
  config: {
548
- domains?: {
549
- domain: string;
550
- handler_path: string;
551
- }[] | undefined;
552
548
  oauth_providers?: {
553
549
  client_id?: string | undefined;
554
550
  client_secret?: string | undefined;
@@ -558,6 +554,10 @@ declare const projectsCrud: ______crud0.CrudSchemaFromOptions<{
558
554
  type: "shared" | "standard";
559
555
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
560
556
  }[] | undefined;
557
+ domains?: {
558
+ domain: string;
559
+ handler_path: string;
560
+ }[] | undefined;
561
561
  allow_localhost?: boolean | undefined;
562
562
  sign_up_enabled?: boolean | undefined;
563
563
  credential_enabled?: boolean | undefined;
@@ -648,15 +648,11 @@ declare const adminUserProjectsCrud: ______crud0.CrudSchemaFromOptions<{
648
648
  onboarding_state: {
649
649
  selected_config_choice: "create-new" | "link-existing";
650
650
  selected_apps: string[];
651
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
651
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
652
652
  selected_email_theme_id: string | null;
653
653
  selected_payments_country: "US" | "OTHER";
654
654
  } | null | undefined;
655
655
  config: {
656
- domains: {
657
- domain: string;
658
- handler_path: string;
659
- }[];
660
656
  oauth_providers: {
661
657
  client_id?: string | undefined;
662
658
  client_secret?: string | undefined;
@@ -667,6 +663,10 @@ declare const adminUserProjectsCrud: ______crud0.CrudSchemaFromOptions<{
667
663
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
668
664
  provider_config_id: string;
669
665
  }[];
666
+ domains: {
667
+ domain: string;
668
+ handler_path: string;
669
+ }[];
670
670
  allow_localhost: boolean;
671
671
  sign_up_enabled: boolean;
672
672
  credential_enabled: boolean;
@@ -763,15 +763,11 @@ declare const adminUserProjectsCrud: ______crud0.CrudSchemaFromOptions<{
763
763
  onboarding_state: {
764
764
  selected_config_choice: "create-new" | "link-existing";
765
765
  selected_apps: string[];
766
- selected_sign_in_methods: ("google" | "github" | "microsoft" | "passkey" | "credential" | "magicLink")[];
766
+ selected_sign_in_methods: ("passkey" | "google" | "github" | "microsoft" | "credential" | "magicLink")[];
767
767
  selected_email_theme_id: string | null;
768
768
  selected_payments_country: "US" | "OTHER";
769
769
  } | null | undefined;
770
770
  config: {
771
- domains?: {
772
- domain: string;
773
- handler_path: string;
774
- }[] | undefined;
775
771
  oauth_providers?: {
776
772
  client_id?: string | undefined;
777
773
  client_secret?: string | undefined;
@@ -781,6 +777,10 @@ declare const adminUserProjectsCrud: ______crud0.CrudSchemaFromOptions<{
781
777
  type: "shared" | "standard";
782
778
  id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
783
779
  }[] | undefined;
780
+ domains?: {
781
+ domain: string;
782
+ handler_path: string;
783
+ }[] | undefined;
784
784
  allow_localhost?: boolean | undefined;
785
785
  sign_up_enabled?: boolean | undefined;
786
786
  credential_enabled?: boolean | undefined;
@@ -34,27 +34,27 @@ declare const teamMemberProfilesCrudServerReadSchema: yup$1.ObjectSchema<{
34
34
  is_anonymous: boolean;
35
35
  is_restricted: boolean;
36
36
  requires_totp_mfa: boolean;
37
+ country_code: string | null;
38
+ profile_image_url: string | null;
39
+ signed_up_at_millis: number;
40
+ last_active_at_millis: number;
37
41
  primary_email_verified: boolean;
38
42
  primary_email_auth_enabled: boolean;
39
- profile_image_url: string | null;
40
43
  selected_team: {
41
44
  client_metadata?: {} | null | undefined;
42
45
  client_read_only_metadata?: {} | null | undefined;
43
46
  server_metadata?: {} | null | undefined;
44
47
  display_name: string;
45
48
  id: string;
46
- profile_image_url: string | null;
47
49
  created_at_millis: number;
50
+ profile_image_url: string | null;
48
51
  } | null;
49
- signed_up_at_millis: number;
50
52
  has_password: boolean;
51
53
  otp_auth_enabled: boolean;
52
54
  passkey_auth_enabled: boolean;
53
- last_active_at_millis: number;
54
55
  restricted_by_admin: boolean;
55
56
  restricted_by_admin_reason: string | null;
56
57
  restricted_by_admin_private_details: string | null;
57
- country_code: string | null;
58
58
  risk_scores: {
59
59
  sign_up: {
60
60
  bot: number;
@@ -157,27 +157,27 @@ declare const teamMemberProfilesCrud: ______crud0.CrudSchemaFromOptions<{
157
157
  is_anonymous: boolean;
158
158
  is_restricted: boolean;
159
159
  requires_totp_mfa: boolean;
160
+ country_code: string | null;
161
+ profile_image_url: string | null;
162
+ signed_up_at_millis: number;
163
+ last_active_at_millis: number;
160
164
  primary_email_verified: boolean;
161
165
  primary_email_auth_enabled: boolean;
162
- profile_image_url: string | null;
163
166
  selected_team: {
164
167
  client_metadata?: {} | null | undefined;
165
168
  client_read_only_metadata?: {} | null | undefined;
166
169
  server_metadata?: {} | null | undefined;
167
170
  display_name: string;
168
171
  id: string;
169
- profile_image_url: string | null;
170
172
  created_at_millis: number;
173
+ profile_image_url: string | null;
171
174
  } | null;
172
- signed_up_at_millis: number;
173
175
  has_password: boolean;
174
176
  otp_auth_enabled: boolean;
175
177
  passkey_auth_enabled: boolean;
176
- last_active_at_millis: number;
177
178
  restricted_by_admin: boolean;
178
179
  restricted_by_admin_reason: string | null;
179
180
  restricted_by_admin_private_details: string | null;
180
- country_code: string | null;
181
181
  risk_scores: {
182
182
  sign_up: {
183
183
  bot: number;
@@ -83,8 +83,8 @@ declare const usersCrudServerReadSchema: yup$1.ObjectSchema<{
83
83
  server_metadata?: {} | null | undefined;
84
84
  display_name: string;
85
85
  id: string;
86
- profile_image_url: string | null;
87
86
  created_at_millis: number;
87
+ profile_image_url: string | null;
88
88
  } | null;
89
89
  selected_team_id: string | null;
90
90
  profile_image_url: string | null;
@@ -164,21 +164,21 @@ declare const usersCrudServerReadSchema: yup$1.ObjectSchema<{
164
164
  }, "">;
165
165
  declare const usersCrudServerCreateSchema: yup$1.ObjectSchema<{
166
166
  primary_email: string | null | undefined;
167
+ password: string | null | undefined;
167
168
  display_name: string | null | undefined;
168
169
  client_metadata: {} | null | undefined;
169
170
  client_read_only_metadata: {} | null | undefined;
170
171
  server_metadata: {} | null | undefined;
171
172
  is_anonymous: boolean | undefined;
172
- password: string | null | undefined;
173
+ country_code: string | null | undefined;
174
+ profile_image_url: string | null | undefined;
173
175
  primary_email_verified: boolean | undefined;
174
176
  primary_email_auth_enabled: boolean | undefined;
175
- profile_image_url: string | null | undefined;
176
177
  otp_auth_enabled: boolean | undefined;
177
178
  passkey_auth_enabled: boolean | undefined;
178
179
  restricted_by_admin: boolean | undefined;
179
180
  restricted_by_admin_reason: string | null | undefined;
180
181
  restricted_by_admin_private_details: string | null | undefined;
181
- country_code: string | null | undefined;
182
182
  risk_scores: {
183
183
  sign_up: {
184
184
  bot: number;
@@ -236,8 +236,8 @@ declare const usersCrud: ______crud0.CrudSchemaFromOptions<{
236
236
  server_metadata?: {} | null | undefined;
237
237
  display_name: string;
238
238
  id: string;
239
- profile_image_url: string | null;
240
239
  created_at_millis: number;
240
+ profile_image_url: string | null;
241
241
  } | null;
242
242
  selected_team_id: string | null;
243
243
  profile_image_url: string | null;
@@ -370,21 +370,21 @@ declare const usersCrud: ______crud0.CrudSchemaFromOptions<{
370
370
  }, "">;
371
371
  serverCreateSchema: yup$1.ObjectSchema<{
372
372
  primary_email: string | null | undefined;
373
+ password: string | null | undefined;
373
374
  display_name: string | null | undefined;
374
375
  client_metadata: {} | null | undefined;
375
376
  client_read_only_metadata: {} | null | undefined;
376
377
  server_metadata: {} | null | undefined;
377
378
  is_anonymous: boolean | undefined;
378
- password: string | null | undefined;
379
+ country_code: string | null | undefined;
380
+ profile_image_url: string | null | undefined;
379
381
  primary_email_verified: boolean | undefined;
380
382
  primary_email_auth_enabled: boolean | undefined;
381
- profile_image_url: string | null | undefined;
382
383
  otp_auth_enabled: boolean | undefined;
383
384
  passkey_auth_enabled: boolean | undefined;
384
385
  restricted_by_admin: boolean | undefined;
385
386
  restricted_by_admin_reason: string | null | undefined;
386
387
  restricted_by_admin_private_details: string | null | undefined;
387
- country_code: string | null | undefined;
388
388
  risk_scores: {
389
389
  sign_up: {
390
390
  bot: number;
@@ -470,8 +470,8 @@ declare const userCreatedWebhookEvent: WebhookEvent<yup$1.ObjectSchema<{
470
470
  server_metadata?: {} | null | undefined;
471
471
  display_name: string;
472
472
  id: string;
473
- profile_image_url: string | null;
474
473
  created_at_millis: number;
474
+ profile_image_url: string | null;
475
475
  } | null;
476
476
  selected_team_id: string | null;
477
477
  profile_image_url: string | null;
@@ -561,8 +561,8 @@ declare const userUpdatedWebhookEvent: WebhookEvent<yup$1.ObjectSchema<{
561
561
  server_metadata?: {} | null | undefined;
562
562
  display_name: string;
563
563
  id: string;
564
- profile_image_url: string | null;
565
564
  created_at_millis: number;
565
+ profile_image_url: string | null;
566
566
  } | null;
567
567
  selected_team_id: string | null;
568
568
  profile_image_url: string | null;
@@ -22,8 +22,8 @@ declare const webhookEvents: readonly [WebhookEvent<yup$1.ObjectSchema<{
22
22
  server_metadata?: {} | null | undefined;
23
23
  display_name: string;
24
24
  id: string;
25
- profile_image_url: string | null;
26
25
  created_at_millis: number;
26
+ profile_image_url: string | null;
27
27
  } | null;
28
28
  selected_team_id: string | null;
29
29
  profile_image_url: string | null;
@@ -112,8 +112,8 @@ declare const webhookEvents: readonly [WebhookEvent<yup$1.ObjectSchema<{
112
112
  server_metadata?: {} | null | undefined;
113
113
  display_name: string;
114
114
  id: string;
115
- profile_image_url: string | null;
116
115
  created_at_millis: number;
116
+ profile_image_url: string | null;
117
117
  } | null;
118
118
  selected_team_id: string | null;
119
119
  profile_image_url: string | null;
@@ -0,0 +1,18 @@
1
+ //#region src/utils/analytics-clickmap-overlay.d.ts
2
+ /**
3
+ * Wire protocol for handing a clickmap overlay token from the dashboard to the
4
+ * in-page dev tool via `sessionStorage` + a window event.
5
+ *
6
+ * The token is a self-describing JWT: its payload already carries the
7
+ * `project_id` and `origin` it was minted for, so the reader derives both from
8
+ * the token itself and the writer only has to hand over a single value. The
9
+ * dashboard (writer) and the dev tool (reader) live in different packages but
10
+ * must agree on these exact names — this module is the single source of truth so
11
+ * they can never silently desync.
12
+ */
13
+ declare const CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY = "hexclave-clickmap-token";
14
+ declare const CLICKMAP_OVERLAY_RESUME_STORAGE_KEY = "hexclave-clickmap-resume";
15
+ declare const CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT = "hexclave:clickmap-token-updated";
16
+ //#endregion
17
+ export { CLICKMAP_OVERLAY_RESUME_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT };
18
+ //# sourceMappingURL=analytics-clickmap-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-clickmap-overlay.d.ts","names":[],"sources":["../../../src/utils/analytics-clickmap-overlay.tsx"],"mappings":";;AAYA;;;;;AACA;;;;;cADa,kCAAA;AAAA,cACA,mCAAA;AAAA,cACA,oCAAA"}
@@ -0,0 +1,19 @@
1
+ //#region src/utils/analytics-clickmap-overlay.tsx
2
+ /**
3
+ * Wire protocol for handing a clickmap overlay token from the dashboard to the
4
+ * in-page dev tool via `sessionStorage` + a window event.
5
+ *
6
+ * The token is a self-describing JWT: its payload already carries the
7
+ * `project_id` and `origin` it was minted for, so the reader derives both from
8
+ * the token itself and the writer only has to hand over a single value. The
9
+ * dashboard (writer) and the dev tool (reader) live in different packages but
10
+ * must agree on these exact names — this module is the single source of truth so
11
+ * they can never silently desync.
12
+ */
13
+ const CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY = "hexclave-clickmap-token";
14
+ const CLICKMAP_OVERLAY_RESUME_STORAGE_KEY = "hexclave-clickmap-resume";
15
+ const CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT = "hexclave:clickmap-token-updated";
16
+
17
+ //#endregion
18
+ export { CLICKMAP_OVERLAY_RESUME_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT };
19
+ //# sourceMappingURL=analytics-clickmap-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-clickmap-overlay.js","names":[],"sources":["../../../src/utils/analytics-clickmap-overlay.tsx"],"sourcesContent":["/**\n * Wire protocol for handing a clickmap overlay token from the dashboard to the\n * in-page dev tool via `sessionStorage` + a window event.\n *\n * The token is a self-describing JWT: its payload already carries the\n * `project_id` and `origin` it was minted for, so the reader derives both from\n * the token itself and the writer only has to hand over a single value. The\n * dashboard (writer) and the dev tool (reader) live in different packages but\n * must agree on these exact names — this module is the single source of truth so\n * they can never silently desync.\n */\n\nexport const CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY = \"hexclave-clickmap-token\";\nexport const CLICKMAP_OVERLAY_RESUME_STORAGE_KEY = \"hexclave-clickmap-resume\";\nexport const CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT = \"hexclave:clickmap-token-updated\";\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,qCAAqC;AAClD,MAAa,sCAAsC;AACnD,MAAa,uCAAuC"}
@@ -0,0 +1,31 @@
1
+ //#region src/utils/dev-tool.d.ts
2
+ /**
3
+ * Shared identity of the Hexclave in-page dev tool / clickmap overlay.
4
+ *
5
+ * These constants are the single source of truth for "is this DOM / event /
6
+ * stored click part of the dev tool itself?". They are consumed across package
7
+ * boundaries:
8
+ * - the dev tool mounts its root element with {@link DEV_TOOL_ROOT_ID} and
9
+ * prefixes every generated class with {@link DEV_TOOL_CLASS_PREFIX};
10
+ * - the event tracker uses them to skip self-clicks at ingest;
11
+ * - the backend clickmap query uses them to filter dev-tool clicks out of
12
+ * aggregate clickmaps server-side.
13
+ *
14
+ * Keep them here so a rename can never silently desync the SQL filter from the
15
+ * actual DOM identity.
16
+ */
17
+ declare const DEV_TOOL_ROOT_ID = "__hexclave-dev-tool-root";
18
+ /**
19
+ * Root element id of the standalone clickmap overlay. The clickmap is an
20
+ * independent feature with its own mount (it must survive the dev tool being
21
+ * removed), so it gets its own root — but its self-clicks need the exact same
22
+ * ingest/query exclusions as the dev tool's.
23
+ */
24
+ declare const CLICKMAP_ROOT_ID = "__hexclave-clickmap-root";
25
+ /** Prefix applied to every class/generated id the dev tool renders. */
26
+ declare const DEV_TOOL_CLASS_PREFIX = "sdt-";
27
+ /** Legacy class marker still present on older dev-tool builds. */
28
+ declare const DEV_TOOL_LEGACY_CLASS = "stack-devtool";
29
+ //#endregion
30
+ export { CLICKMAP_ROOT_ID, DEV_TOOL_CLASS_PREFIX, DEV_TOOL_LEGACY_CLASS, DEV_TOOL_ROOT_ID };
31
+ //# sourceMappingURL=dev-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-tool.d.ts","names":[],"sources":["../../../src/utils/dev-tool.tsx"],"mappings":";;AAeA;;;;;AAQA;;;;;AAGA;;;;cAXa,gBAAA;AAcb;;;;;;AAAA,cANa,gBAAA;;cAGA,qBAAA;;cAGA,qBAAA"}
@@ -0,0 +1,32 @@
1
+ //#region src/utils/dev-tool.tsx
2
+ /**
3
+ * Shared identity of the Hexclave in-page dev tool / clickmap overlay.
4
+ *
5
+ * These constants are the single source of truth for "is this DOM / event /
6
+ * stored click part of the dev tool itself?". They are consumed across package
7
+ * boundaries:
8
+ * - the dev tool mounts its root element with {@link DEV_TOOL_ROOT_ID} and
9
+ * prefixes every generated class with {@link DEV_TOOL_CLASS_PREFIX};
10
+ * - the event tracker uses them to skip self-clicks at ingest;
11
+ * - the backend clickmap query uses them to filter dev-tool clicks out of
12
+ * aggregate clickmaps server-side.
13
+ *
14
+ * Keep them here so a rename can never silently desync the SQL filter from the
15
+ * actual DOM identity.
16
+ */
17
+ const DEV_TOOL_ROOT_ID = "__hexclave-dev-tool-root";
18
+ /**
19
+ * Root element id of the standalone clickmap overlay. The clickmap is an
20
+ * independent feature with its own mount (it must survive the dev tool being
21
+ * removed), so it gets its own root — but its self-clicks need the exact same
22
+ * ingest/query exclusions as the dev tool's.
23
+ */
24
+ const CLICKMAP_ROOT_ID = "__hexclave-clickmap-root";
25
+ /** Prefix applied to every class/generated id the dev tool renders. */
26
+ const DEV_TOOL_CLASS_PREFIX = "sdt-";
27
+ /** Legacy class marker still present on older dev-tool builds. */
28
+ const DEV_TOOL_LEGACY_CLASS = "stack-devtool";
29
+
30
+ //#endregion
31
+ export { CLICKMAP_ROOT_ID, DEV_TOOL_CLASS_PREFIX, DEV_TOOL_LEGACY_CLASS, DEV_TOOL_ROOT_ID };
32
+ //# sourceMappingURL=dev-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-tool.js","names":[],"sources":["../../../src/utils/dev-tool.tsx"],"sourcesContent":["/**\n * Shared identity of the Hexclave in-page dev tool / clickmap overlay.\n *\n * These constants are the single source of truth for \"is this DOM / event /\n * stored click part of the dev tool itself?\". They are consumed across package\n * boundaries:\n * - the dev tool mounts its root element with {@link DEV_TOOL_ROOT_ID} and\n * prefixes every generated class with {@link DEV_TOOL_CLASS_PREFIX};\n * - the event tracker uses them to skip self-clicks at ingest;\n * - the backend clickmap query uses them to filter dev-tool clicks out of\n * aggregate clickmaps server-side.\n *\n * Keep them here so a rename can never silently desync the SQL filter from the\n * actual DOM identity.\n */\nexport const DEV_TOOL_ROOT_ID = \"__hexclave-dev-tool-root\";\n\n/**\n * Root element id of the standalone clickmap overlay. The clickmap is an\n * independent feature with its own mount (it must survive the dev tool being\n * removed), so it gets its own root — but its self-clicks need the exact same\n * ingest/query exclusions as the dev tool's.\n */\nexport const CLICKMAP_ROOT_ID = \"__hexclave-clickmap-root\";\n\n/** Prefix applied to every class/generated id the dev tool renders. */\nexport const DEV_TOOL_CLASS_PREFIX = \"sdt-\";\n\n/** Legacy class marker still present on older dev-tool builds. */\nexport const DEV_TOOL_LEGACY_CLASS = \"stack-devtool\";\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAa,mBAAmB;;;;;;;AAQhC,MAAa,mBAAmB;;AAGhC,MAAa,wBAAwB;;AAGrC,MAAa,wBAAwB"}
@@ -1,5 +1,11 @@
1
1
  //#region src/utils/dom.d.ts
2
2
  declare function hasClickableParent(element: HTMLElement): boolean;
3
+ /**
4
+ * Escape a string so it is safe to use as a CSS identifier (id/class) inside a selector.
5
+ * Prefers the native `CSS.escape` when available, falling back to a conservative
6
+ * backslash-escape for non-DOM environments (SSR, tests, older runtimes).
7
+ */
8
+ declare function cssEscapeIdent(value: string): string;
3
9
  //#endregion
4
- export { hasClickableParent };
10
+ export { cssEscapeIdent, hasClickableParent };
5
11
  //# sourceMappingURL=dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","names":[],"sources":["../../../src/utils/dom.tsx"],"mappings":";iBAAgB,kBAAA,CAAmB,OAAA,EAAS,WAAA"}
1
+ {"version":3,"file":"dom.d.ts","names":[],"sources":["../../../src/utils/dom.tsx"],"mappings":";iBAAgB,kBAAA,CAAmB,OAAA,EAAS,WAAA;AAA5C;;;;;AAAA,iBAagB,cAAA,CAAe,KAAA"}
@@ -5,7 +5,26 @@ function hasClickableParent(element) {
5
5
  if (parent.dataset.n2Clickable) return true;
6
6
  return hasClickableParent(element.parentElement);
7
7
  }
8
+ /**
9
+ * Escape a string so it is safe to use as a CSS identifier (id/class) inside a selector.
10
+ * Prefers the native `CSS.escape` when available, falling back to a conservative
11
+ * backslash-escape for non-DOM environments (SSR, tests, older runtimes).
12
+ */
13
+ function cssEscapeIdent(value) {
14
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
15
+ let escaped = "";
16
+ for (let i = 0; i < value.length; i += 1) {
17
+ const char = value.charAt(i);
18
+ const codeUnit = value.charCodeAt(i);
19
+ if (codeUnit === 0) escaped += "�";
20
+ else if (codeUnit >= 1 && codeUnit <= 31 || codeUnit === 127 || i === 0 && codeUnit >= 48 && codeUnit <= 57 || i === 1 && codeUnit >= 48 && codeUnit <= 57 && value.charCodeAt(0) === 45) escaped += `\\${codeUnit.toString(16)} `;
21
+ else if (i === 0 && codeUnit === 45 && value.length === 1) escaped += "\\-";
22
+ else if (codeUnit >= 128 || codeUnit === 45 || codeUnit === 95 || codeUnit >= 48 && codeUnit <= 57 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 97 && codeUnit <= 122) escaped += char;
23
+ else escaped += `\\${char}`;
24
+ }
25
+ return escaped;
26
+ }
8
27
 
9
28
  //#endregion
10
- export { hasClickableParent };
29
+ export { cssEscapeIdent, hasClickableParent };
11
30
  //# sourceMappingURL=dom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","names":[],"sources":["../../../src/utils/dom.tsx"],"sourcesContent":["export function hasClickableParent(element: HTMLElement): boolean {\n const parent = element.parentElement;\n if (!parent) return false;\n if (parent.dataset.n2Clickable) return true;\n\n return hasClickableParent(element.parentElement);\n}\n"],"mappings":";AAAA,SAAgB,mBAAmB,SAA+B;CAChE,MAAM,SAAS,QAAQ;AACvB,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,OAAO,QAAQ,YAAa,QAAO;AAEvC,QAAO,mBAAmB,QAAQ,cAAc"}
1
+ {"version":3,"file":"dom.js","names":[],"sources":["../../../src/utils/dom.tsx"],"sourcesContent":["export function hasClickableParent(element: HTMLElement): boolean {\n const parent = element.parentElement;\n if (!parent) return false;\n if (parent.dataset.n2Clickable) return true;\n\n return hasClickableParent(element.parentElement);\n}\n\n/**\n * Escape a string so it is safe to use as a CSS identifier (id/class) inside a selector.\n * Prefers the native `CSS.escape` when available, falling back to a conservative\n * backslash-escape for non-DOM environments (SSR, tests, older runtimes).\n */\nexport function cssEscapeIdent(value: string): string {\n if (typeof CSS !== \"undefined\" && typeof CSS.escape === \"function\") {\n return CSS.escape(value);\n }\n\n let escaped = \"\";\n for (let i = 0; i < value.length; i += 1) {\n const char = value.charAt(i);\n const codeUnit = value.charCodeAt(i);\n\n if (codeUnit === 0x0000) {\n escaped += \"\\uFFFD\";\n } else if (\n (codeUnit >= 0x0001 && codeUnit <= 0x001f) ||\n codeUnit === 0x007f ||\n (i === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n (i === 1 && codeUnit >= 0x0030 && codeUnit <= 0x0039 && value.charCodeAt(0) === 0x002d)\n ) {\n escaped += `\\\\${codeUnit.toString(16)} `;\n } else if (i === 0 && codeUnit === 0x002d && value.length === 1) {\n escaped += \"\\\\-\";\n } else if (\n codeUnit >= 0x0080 ||\n codeUnit === 0x002d ||\n codeUnit === 0x005f ||\n (codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n (codeUnit >= 0x0041 && codeUnit <= 0x005a) ||\n (codeUnit >= 0x0061 && codeUnit <= 0x007a)\n ) {\n escaped += char;\n } else {\n escaped += `\\\\${char}`;\n }\n }\n return escaped;\n}\n"],"mappings":";AAAA,SAAgB,mBAAmB,SAA+B;CAChE,MAAM,SAAS,QAAQ;AACvB,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,OAAO,QAAQ,YAAa,QAAO;AAEvC,QAAO,mBAAmB,QAAQ,cAAc;;;;;;;AAQlD,SAAgB,eAAe,OAAuB;AACpD,KAAI,OAAO,QAAQ,eAAe,OAAO,IAAI,WAAW,WACtD,QAAO,IAAI,OAAO,MAAM;CAG1B,IAAI,UAAU;AACd,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxC,MAAM,OAAO,MAAM,OAAO,EAAE;EAC5B,MAAM,WAAW,MAAM,WAAW,EAAE;AAEpC,MAAI,aAAa,EACf,YAAW;WAEV,YAAY,KAAU,YAAY,MACnC,aAAa,OACZ,MAAM,KAAK,YAAY,MAAU,YAAY,MAC7C,MAAM,KAAK,YAAY,MAAU,YAAY,MAAU,MAAM,WAAW,EAAE,KAAK,GAEhF,YAAW,KAAK,SAAS,SAAS,GAAG,CAAC;WAC7B,MAAM,KAAK,aAAa,MAAU,MAAM,WAAW,EAC5D,YAAW;WAEX,YAAY,OACZ,aAAa,MACb,aAAa,MACZ,YAAY,MAAU,YAAY,MAClC,YAAY,MAAU,YAAY,MAClC,YAAY,MAAU,YAAY,IAEnC,YAAW;MAEX,YAAW,KAAK;;AAGpB,QAAO"}
@@ -0,0 +1,38 @@
1
+ //#region src/utils/elements-chain.d.ts
2
+ /**
3
+ * PostHog-style `elements_chain` format — the single owner of both halves of the
4
+ * contract. The event tracker {@link buildElementsChain serializes} a clicked
5
+ * element (and its ancestors) into a string; the clickmap overlay
6
+ * {@link parseElementsChain parses} that string back into structured segments so
7
+ * it can re-locate the element in a live DOM.
8
+ *
9
+ * Encode and decode MUST round-trip exactly, which is why they live together:
10
+ * the escaping applied here on the write side is reversed by the parser below,
11
+ * and a single round-trip test in `elements-chain.test.tsx` guards the pair.
12
+ *
13
+ * Segment shape (leaf-first, joined by `;`):
14
+ * tag.class1.class2:nth-child="2":nth-of-type="1":text="Save":attr__id="x":href="..."
15
+ */
16
+ type ElementsChainSegment = {
17
+ tag: string;
18
+ classes: string[];
19
+ attrs: Record<string, string>;
20
+ text: string | null;
21
+ nthChild: number | null;
22
+ nthOfType: number | null;
23
+ href: string | null;
24
+ };
25
+ declare const ELEMENTS_CHAIN_MAX_DEPTH = 8;
26
+ declare const ELEMENTS_CHAIN_TEXT_MAX = 80;
27
+ declare const ELEMENTS_CHAIN_ATTR_MAX = 200;
28
+ declare const ELEMENTS_CHAIN_ATTRS: readonly ["id", "data-testid", "data-test-id", "data-hexclave-id", "name", "type", "role", "aria-label", "placeholder", "title"];
29
+ /**
30
+ * Serialise a clicked element and up to {@link ELEMENTS_CHAIN_MAX_DEPTH}
31
+ * ancestors (leaf-first) into an `elements_chain` string.
32
+ */
33
+ declare function buildElementsChain(element: Element): string;
34
+ /** Parse an `elements_chain` string into structured, leaf-first segments. */
35
+ declare function parseElementsChain(chain: string): ElementsChainSegment[];
36
+ //#endregion
37
+ export { ELEMENTS_CHAIN_ATTRS, ELEMENTS_CHAIN_ATTR_MAX, ELEMENTS_CHAIN_MAX_DEPTH, ELEMENTS_CHAIN_TEXT_MAX, ElementsChainSegment, buildElementsChain, parseElementsChain };
38
+ //# sourceMappingURL=elements-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements-chain.d.ts","names":[],"sources":["../../../src/utils/elements-chain.tsx"],"mappings":";;AAeA;;;;;;;;;;;;;KAAY,oBAAA;EACV,GAAA;EACA,OAAA;EACA,KAAA,EAAO,MAAA;EACP,IAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;AAAA;AAAA,cAGW,wBAAA;AAAA,cACA,uBAAA;AAAA,cACA,uBAAA;AAAA,cAKA,oBAAA;;;;AAAb;iBAyFgB,kBAAA,CAAmB,OAAA,EAAS,OAAA;;iBA0K5B,kBAAA,CAAmB,KAAA,WAAgB,oBAAA"}