@carlonicora/nextjs-jsonapi 6.1.0 → 6.2.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 (67) hide show
  1. package/dist/{BlockNoteEditor-FZNU4YQT.mjs → BlockNoteEditor-D6VMXRZH.mjs} +4 -4
  2. package/dist/{BlockNoteEditor-SAU3G6H7.js → BlockNoteEditor-Q757ZLCO.js} +19 -19
  3. package/dist/{BlockNoteEditor-SAU3G6H7.js.map → BlockNoteEditor-Q757ZLCO.js.map} +1 -1
  4. package/dist/{BlockNoteViewer-6XDDVTN6.mjs → BlockNoteViewer-GI5LVQHZ.mjs} +2 -2
  5. package/dist/{BlockNoteViewer-7BTV7QQA.js → BlockNoteViewer-KG4CIJC5.js} +3 -3
  6. package/dist/{BlockNoteViewer-7BTV7QQA.js.map → BlockNoteViewer-KG4CIJC5.js.map} +1 -1
  7. package/dist/billing/index.js +491 -491
  8. package/dist/billing/index.mjs +3 -3
  9. package/dist/{chunk-F4JB7YAP.js → chunk-3P3IYUWQ.js} +8 -8
  10. package/dist/{chunk-F4JB7YAP.js.map → chunk-3P3IYUWQ.js.map} +1 -1
  11. package/dist/{chunk-U7DR5VDT.mjs → chunk-6PW3562E.mjs} +5 -5
  12. package/dist/{chunk-JVJS5RHB.mjs → chunk-CUNSPLOD.mjs} +2 -2
  13. package/dist/{chunk-T3YQ47EF.js → chunk-GSHMGL6N.js} +2 -1
  14. package/dist/chunk-GSHMGL6N.js.map +1 -0
  15. package/dist/{chunk-GFGKMUPZ.mjs → chunk-HLW3SUMD.mjs} +2 -2
  16. package/dist/{chunk-RYZYKG6W.mjs → chunk-MHBE4KQR.mjs} +2 -2
  17. package/dist/{chunk-USYZNWKS.mjs → chunk-QKDPCZ3G.mjs} +2 -1
  18. package/dist/{chunk-USYZNWKS.mjs.map → chunk-QKDPCZ3G.mjs.map} +1 -1
  19. package/dist/{chunk-TPZS46IM.js → chunk-S332ZCIE.js} +3 -3
  20. package/dist/{chunk-TPZS46IM.js.map → chunk-S332ZCIE.js.map} +1 -1
  21. package/dist/{chunk-MTI2UXDA.js → chunk-UEWDYVLW.js} +4 -4
  22. package/dist/{chunk-MTI2UXDA.js.map → chunk-UEWDYVLW.js.map} +1 -1
  23. package/dist/{chunk-IPYXT7MH.js → chunk-XQEYBESH.js} +868 -868
  24. package/dist/{chunk-IPYXT7MH.js.map → chunk-XQEYBESH.js.map} +1 -1
  25. package/dist/client/index.js +4 -4
  26. package/dist/client/index.mjs +3 -3
  27. package/dist/components/index.js +4 -4
  28. package/dist/components/index.mjs +3 -3
  29. package/dist/contexts/index.js +4 -4
  30. package/dist/contexts/index.mjs +3 -3
  31. package/dist/core/index.js +2 -2
  32. package/dist/core/index.mjs +1 -1
  33. package/dist/email-automations/index.js +92 -92
  34. package/dist/email-automations/index.mjs +3 -3
  35. package/dist/features/analytics/index.d.mts +9 -1
  36. package/dist/features/analytics/index.d.ts +9 -1
  37. package/dist/features/analytics/index.js +129 -127
  38. package/dist/features/analytics/index.js.map +1 -1
  39. package/dist/features/analytics/index.mjs +12 -10
  40. package/dist/features/analytics/index.mjs.map +1 -1
  41. package/dist/features/analytics/server.js +4 -4
  42. package/dist/features/analytics/server.mjs +2 -2
  43. package/dist/features/blog/index.js +150 -150
  44. package/dist/features/blog/index.mjs +3 -3
  45. package/dist/features/blog/server.js +16 -16
  46. package/dist/features/blog/server.mjs +1 -1
  47. package/dist/features/help/index.js +37 -37
  48. package/dist/features/help/index.mjs +3 -3
  49. package/dist/features/tokenusage/index.js +127 -127
  50. package/dist/features/tokenusage/index.mjs +4 -4
  51. package/dist/index.js +3 -3
  52. package/dist/index.mjs +2 -2
  53. package/dist/server/index.js +3 -3
  54. package/dist/server/index.mjs +2 -2
  55. package/package.json +1 -1
  56. package/src/features/analytics/components/AnalyticsTracker.tsx +22 -9
  57. package/src/features/analytics/components/__tests__/AnalyticsTracker.spec.tsx +67 -0
  58. package/src/features/analytics/data/__tests__/models.spec.ts +13 -0
  59. package/src/features/analytics/data/analytics-event.ts +1 -0
  60. package/src/features/analytics/data/analytics.types.ts +2 -0
  61. package/dist/chunk-T3YQ47EF.js.map +0 -1
  62. /package/dist/{BlockNoteEditor-FZNU4YQT.mjs.map → BlockNoteEditor-D6VMXRZH.mjs.map} +0 -0
  63. /package/dist/{BlockNoteViewer-6XDDVTN6.mjs.map → BlockNoteViewer-GI5LVQHZ.mjs.map} +0 -0
  64. /package/dist/{chunk-U7DR5VDT.mjs.map → chunk-6PW3562E.mjs.map} +0 -0
  65. /package/dist/{chunk-JVJS5RHB.mjs.map → chunk-CUNSPLOD.mjs.map} +0 -0
  66. /package/dist/{chunk-GFGKMUPZ.mjs.map → chunk-HLW3SUMD.mjs.map} +0 -0
  67. /package/dist/{chunk-RYZYKG6W.mjs.map → chunk-MHBE4KQR.mjs.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  percentageDelta,
10
10
  seriesColor,
11
11
  useUsageFormatters
12
- } from "../../chunk-RYZYKG6W.mjs";
12
+ } from "../../chunk-MHBE4KQR.mjs";
13
13
  import {
14
14
  Button,
15
15
  Card,
@@ -40,8 +40,8 @@ import {
40
40
  TooltipContent,
41
41
  TooltipTrigger,
42
42
  usePageUrlGenerator
43
- } from "../../chunk-U7DR5VDT.mjs";
44
- import "../../chunk-JVJS5RHB.mjs";
43
+ } from "../../chunk-6PW3562E.mjs";
44
+ import "../../chunk-CUNSPLOD.mjs";
45
45
  import "../../chunk-PW42LRSL.mjs";
46
46
  import {
47
47
  AbstractService,
@@ -60,7 +60,7 @@ import {
60
60
  configureTokenUsage,
61
61
  getTokenUsageCurrency,
62
62
  tokenUsageModules
63
- } from "../../chunk-USYZNWKS.mjs";
63
+ } from "../../chunk-QKDPCZ3G.mjs";
64
64
  import "../../chunk-V5MI7RNB.mjs";
65
65
  import "../../chunk-AUXK7QSA.mjs";
66
66
  import "../../chunk-PI56A4DG.mjs";
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
 
22
- var _chunkF4JB7YAPjs = require('./chunk-F4JB7YAP.js');
22
+ var _chunk3P3IYUWQjs = require('./chunk-3P3IYUWQ.js');
23
23
 
24
24
 
25
25
 
@@ -306,7 +306,7 @@ var _chunkG4JR3SFVjs = require('./chunk-G4JR3SFV.js');
306
306
 
307
307
 
308
308
 
309
- var _chunkT3YQ47EFjs = require('./chunk-T3YQ47EF.js');
309
+ var _chunkGSHMGL6Njs = require('./chunk-GSHMGL6N.js');
310
310
 
311
311
 
312
312
 
@@ -637,5 +637,5 @@ require('./chunk-7QVYU63E.js');
637
637
 
638
638
 
639
639
 
640
- exports.ACTION_TYPES = _chunkF4JB7YAPjs.ACTION_TYPES; exports.AVAILABLE_OAUTH_SCOPES = _chunkT3YQ47EFjs.AVAILABLE_OAUTH_SCOPES; exports.AbstractApiData = _chunkT3YQ47EFjs.AbstractApiData; exports.AbstractService = _chunkT3YQ47EFjs.AbstractService; exports.Action = _chunkT3YQ47EFjs.Action; exports.AiConnection = _chunkT3YQ47EFjs.AiConnection; exports.AiConnectionFields = _chunkT3YQ47EFjs.AiConnectionFields; exports.AiConnectionModule = _chunkT3YQ47EFjs.AiConnectionModule; exports.AiConnectionService = _chunkT3YQ47EFjs.AiConnectionService; exports.Assistant = _chunkT3YQ47EFjs.Assistant; exports.AssistantAction = _chunkT3YQ47EFjs.AssistantAction; exports.AssistantActionModule = _chunkT3YQ47EFjs.AssistantActionModule; exports.AssistantActionService = _chunkT3YQ47EFjs.AssistantActionService; exports.AssistantMessage = _chunkT3YQ47EFjs.AssistantMessage; exports.AssistantMessageModule = _chunkT3YQ47EFjs.AssistantMessageModule; exports.AssistantMessageService = _chunkT3YQ47EFjs.AssistantMessageService; exports.AssistantModule = _chunkT3YQ47EFjs.AssistantModule; exports.AssistantService = _chunkT3YQ47EFjs.AssistantService; exports.AuditLog = _chunkT3YQ47EFjs.AuditLog; exports.AuditLogModule = _chunkT3YQ47EFjs.AuditLogModule; exports.AuditLogService = _chunkT3YQ47EFjs.AuditLogService; exports.Auth = _chunkT3YQ47EFjs.Auth; exports.AuthComponent = _chunkT3YQ47EFjs.AuthComponent; exports.AuthModule = _chunkT3YQ47EFjs.AuthModule; exports.AuthService = _chunkT3YQ47EFjs.AuthService; exports.AuthorModule = _chunkT3YQ47EFjs.AuthorModule; exports.BackupCodeVerify = _chunkT3YQ47EFjs.BackupCodeVerify; exports.BackupCodeVerifyModule = _chunkT3YQ47EFjs.BackupCodeVerifyModule; exports.Billing = _chunkT3YQ47EFjs.Billing; exports.BillingModule = _chunkT3YQ47EFjs.BillingModule; exports.BillingService = _chunkT3YQ47EFjs.BillingService; exports.BlockNoteDiffUtil = _chunkT3YQ47EFjs.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunkT3YQ47EFjs.BlockNoteWordDiffRendererUtil; exports.BlogCategory = _chunkT3YQ47EFjs.BlogCategory; exports.BlogCategoryFields = _chunkT3YQ47EFjs.BlogCategoryFields; exports.BlogCategoryModule = _chunkT3YQ47EFjs.BlogCategoryModule; exports.BlogCategoryService = _chunkT3YQ47EFjs.BlogCategoryService; exports.BlogCategoryTranslation = _chunkT3YQ47EFjs.BlogCategoryTranslation; exports.BlogCategoryTranslationModule = _chunkT3YQ47EFjs.BlogCategoryTranslationModule; exports.BlogCategoryTranslationService = _chunkT3YQ47EFjs.BlogCategoryTranslationService; exports.BlogPost = _chunkT3YQ47EFjs.BlogPost; exports.BlogPostFields = _chunkT3YQ47EFjs.BlogPostFields; exports.BlogPostModule = _chunkT3YQ47EFjs.BlogPostModule; exports.BlogPostService = _chunkT3YQ47EFjs.BlogPostService; exports.BlogPostTranslation = _chunkT3YQ47EFjs.BlogPostTranslation; exports.BlogPostTranslationModule = _chunkT3YQ47EFjs.BlogPostTranslationModule; exports.BlogPostTranslationService = _chunkT3YQ47EFjs.BlogPostTranslationService; exports.BlogSettings = _chunkT3YQ47EFjs.BlogSettings; exports.BlogSettingsModule = _chunkT3YQ47EFjs.BlogSettingsModule; exports.BlogSettingsService = _chunkT3YQ47EFjs.BlogSettingsService; exports.COMPANY_ADMINISTRATOR_ROLE_ID = _chunkF4JB7YAPjs.COMPANY_ADMINISTRATOR_ROLE_ID; exports.CURRENT_USER_STORAGE_KEY = _chunkT3YQ47EFjs.CURRENT_USER_STORAGE_KEY; exports.Chunk = _chunkT3YQ47EFjs.Chunk; exports.ChunkModule = _chunkT3YQ47EFjs.ChunkModule; exports.ClientAbstractService = _chunkT3YQ47EFjs.ClientAbstractService; exports.ClientHttpMethod = _chunkT3YQ47EFjs.ClientHttpMethod; exports.Company = _chunkT3YQ47EFjs.Company; exports.CompanyFields = _chunkT3YQ47EFjs.CompanyFields; exports.CompanyModule = _chunkT3YQ47EFjs.CompanyModule; exports.CompanyService = _chunkT3YQ47EFjs.CompanyService; exports.Content = _chunkT3YQ47EFjs.Content; exports.ContentFields = _chunkT3YQ47EFjs.ContentFields; exports.ContentModule = _chunkT3YQ47EFjs.ContentModule; exports.ContentService = _chunkT3YQ47EFjs.ContentService; exports.DEFAULT_GRANT_TYPES = _chunkT3YQ47EFjs.DEFAULT_GRANT_TYPES; exports.DataClass = _chunkGHE4VT2Rjs.DataClassRegistry; exports.DataClassRegistry = _chunkGHE4VT2Rjs.DataClassRegistry; exports.EMAIL_AUTOMATION_UNSUBSCRIBE_TYPE = _chunkT3YQ47EFjs.EMAIL_AUTOMATION_UNSUBSCRIBE_TYPE; exports.ENV = _chunkGHE4VT2Rjs.ENV; exports.EmailAutomation = _chunkT3YQ47EFjs.EmailAutomation; exports.EmailAutomationEnrollment = _chunkT3YQ47EFjs.EmailAutomationEnrollment; exports.EmailAutomationEnrollmentFields = _chunkT3YQ47EFjs.EmailAutomationEnrollmentFields; exports.EmailAutomationEnrollmentModule = _chunkT3YQ47EFjs.EmailAutomationEnrollmentModule; exports.EmailAutomationEnrollmentService = _chunkT3YQ47EFjs.EmailAutomationEnrollmentService; exports.EmailAutomationFields = _chunkT3YQ47EFjs.EmailAutomationFields; exports.EmailAutomationModule = _chunkT3YQ47EFjs.EmailAutomationModule; exports.EmailAutomationService = _chunkT3YQ47EFjs.EmailAutomationService; exports.EmailAutomationStep = _chunkT3YQ47EFjs.EmailAutomationStep; exports.EmailAutomationStepModule = _chunkT3YQ47EFjs.EmailAutomationStepModule; exports.EmailAutomationStepService = _chunkT3YQ47EFjs.EmailAutomationStepService; exports.EmailAutomationTrigger = _chunkT3YQ47EFjs.EmailAutomationTrigger; exports.EmailAutomationTriggerModule = _chunkT3YQ47EFjs.EmailAutomationTriggerModule; exports.EndpointCreator = _chunkT3YQ47EFjs.EndpointCreator; exports.EntityAiStatus = _chunkT3YQ47EFjs.EntityAiStatus; exports.Feature = _chunkT3YQ47EFjs.Feature; exports.FeatureModule = _chunkT3YQ47EFjs.FeatureModule; exports.FeatureService = _chunkT3YQ47EFjs.FeatureService; exports.HandbookPage = _chunkT3YQ47EFjs.HandbookPage; exports.HandbookPageFields = _chunkT3YQ47EFjs.HandbookPageFields; exports.HandbookPageModule = _chunkT3YQ47EFjs.HandbookPageModule; exports.HandbookPageService = _chunkT3YQ47EFjs.HandbookPageService; exports.HandbookSection = _chunkT3YQ47EFjs.HandbookSection; exports.HandbookSectionModule = _chunkT3YQ47EFjs.HandbookSectionModule; exports.HandbookSectionService = _chunkT3YQ47EFjs.HandbookSectionService; exports.HandbookThread = _chunkT3YQ47EFjs.HandbookThread; exports.HandbookThreadMessage = _chunkT3YQ47EFjs.HandbookThreadMessage; exports.HandbookThreadMessageModule = _chunkT3YQ47EFjs.HandbookThreadMessageModule; exports.HandbookThreadMessageService = _chunkT3YQ47EFjs.HandbookThreadMessageService; exports.HandbookThreadModule = _chunkT3YQ47EFjs.HandbookThreadModule; exports.HandbookThreadService = _chunkT3YQ47EFjs.HandbookThreadService; exports.HowTo = _chunkT3YQ47EFjs.HowTo; exports.HowToFields = _chunkT3YQ47EFjs.HowToFields; exports.HowToModule = _chunkT3YQ47EFjs.HowToModule; exports.HowToService = _chunkT3YQ47EFjs.HowToService; exports.HttpMethod = _chunkT3YQ47EFjs.HttpMethod; exports.InvoiceStatus = _chunkT3YQ47EFjs.InvoiceStatus; exports.JsonApiDataFactory = _chunkGHE4VT2Rjs.JsonApiDataFactory; exports.MOBILE_BREAKPOINT = _chunkT3YQ47EFjs.MOBILE_BREAKPOINT; exports.Module = _chunkT3YQ47EFjs.Module; exports.ModuleModule = _chunkT3YQ47EFjs.ModuleModule; exports.ModulePaths = _chunkT3YQ47EFjs.ModulePaths; exports.ModulePathsModule = _chunkT3YQ47EFjs.ModulePathsModule; exports.ModuleRegistrar = _chunkT3YQ47EFjs.ModuleRegistrar; exports.ModuleRegistry = _chunkT3YQ47EFjs.ModuleRegistry; exports.Modules = _chunkT3YQ47EFjs.Modules; exports.Notification = _chunkT3YQ47EFjs.Notification; exports.NotificationFields = _chunkT3YQ47EFjs.NotificationFields; exports.NotificationModule = _chunkT3YQ47EFjs.NotificationModule; exports.NotificationService = _chunkT3YQ47EFjs.NotificationService; exports.OAUTH_SCOPE_DISPLAY = _chunkT3YQ47EFjs.OAUTH_SCOPE_DISPLAY; exports.OAuthClient = _chunkT3YQ47EFjs.OAuthClient; exports.OAuthModule = _chunkT3YQ47EFjs.OAuthModule; exports.OAuthService = _chunkT3YQ47EFjs.OAuthService; exports.Passkey = _chunkT3YQ47EFjs.Passkey; exports.PasskeyAuthenticationOptions = _chunkT3YQ47EFjs.PasskeyAuthenticationOptions; exports.PasskeyAuthenticationOptionsModule = _chunkT3YQ47EFjs.PasskeyAuthenticationOptionsModule; exports.PasskeyModule = _chunkT3YQ47EFjs.PasskeyModule; exports.PasskeyRegistrationOptions = _chunkT3YQ47EFjs.PasskeyRegistrationOptions; exports.PasskeyRegistrationOptionsModule = _chunkT3YQ47EFjs.PasskeyRegistrationOptionsModule; exports.PasskeyRegistrationVerify = _chunkT3YQ47EFjs.PasskeyRegistrationVerify; exports.PasskeyRegistrationVerifyModule = _chunkT3YQ47EFjs.PasskeyRegistrationVerifyModule; exports.PasskeyRename = _chunkT3YQ47EFjs.PasskeyRename; exports.PasskeyRenameModule = _chunkT3YQ47EFjs.PasskeyRenameModule; exports.PasskeyVerifyLogin = _chunkT3YQ47EFjs.PasskeyVerifyLogin; exports.PasskeyVerifyLoginModule = _chunkT3YQ47EFjs.PasskeyVerifyLoginModule; exports.PaymentMethod = _chunkT3YQ47EFjs.PaymentMethod; exports.PermissionMapping = _chunkT3YQ47EFjs.PermissionMapping; exports.PermissionMappingModule = _chunkT3YQ47EFjs.PermissionMappingModule; exports.Push = _chunkT3YQ47EFjs.Push; exports.PushModule = _chunkT3YQ47EFjs.PushModule; exports.PushService = _chunkT3YQ47EFjs.PushService; exports.RbacMatrixModel = _chunkT3YQ47EFjs.RbacMatrixModel; exports.RbacMatrixModule = _chunkT3YQ47EFjs.RbacMatrixModule; exports.RbacService = _chunkF4JB7YAPjs.RbacService; exports.ReferralModule = _chunkT3YQ47EFjs.ReferralModule; exports.ReferralService = _chunkT3YQ47EFjs.ReferralService; exports.ReferralStats = _chunkT3YQ47EFjs.ReferralStats; exports.ReferralStatsModule = _chunkT3YQ47EFjs.ReferralStatsModule; exports.RehydrationFactory = _chunkT3YQ47EFjs.RehydrationFactory; exports.Role = _chunkT3YQ47EFjs.Role; exports.RoleFields = _chunkT3YQ47EFjs.RoleFields; exports.RoleModule = _chunkT3YQ47EFjs.RoleModule; exports.RoleService = _chunkT3YQ47EFjs.RoleService; exports.S3 = _chunkT3YQ47EFjs.S3; exports.S3Module = _chunkT3YQ47EFjs.S3Module; exports.S3Service = _chunkT3YQ47EFjs.S3Service; exports.SIGNUP_SOURCE_COOKIE = _chunkF4JB7YAPjs.SIGNUP_SOURCE_COOKIE; exports.SIGNUP_SOURCE_COOKIE_MAX_AGE = _chunkF4JB7YAPjs.SIGNUP_SOURCE_COOKIE_MAX_AGE; exports.STRIPE_COUPON_CODE_AUTOMATIC_SEGMENT = _chunkT3YQ47EFjs.STRIPE_COUPON_CODE_AUTOMATIC_SEGMENT; exports.STRIPE_COUPON_DETAIL_PAGE_URL = _chunkT3YQ47EFjs.STRIPE_COUPON_DETAIL_PAGE_URL; exports.STRIPE_COUPON_REFRESH_SEGMENT = _chunkT3YQ47EFjs.STRIPE_COUPON_REFRESH_SEGMENT; exports.StripeCoupon = _chunkT3YQ47EFjs.StripeCoupon; exports.StripeCouponCode = _chunkT3YQ47EFjs.StripeCouponCode; exports.StripeCouponCodeFields = _chunkT3YQ47EFjs.StripeCouponCodeFields; exports.StripeCouponCodeModule = _chunkT3YQ47EFjs.StripeCouponCodeModule; exports.StripeCouponCodeService = _chunkT3YQ47EFjs.StripeCouponCodeService; exports.StripeCouponFields = _chunkT3YQ47EFjs.StripeCouponFields; exports.StripeCouponModule = _chunkT3YQ47EFjs.StripeCouponModule; exports.StripeCouponOffer = _chunkT3YQ47EFjs.StripeCouponOffer; exports.StripeCouponOfferModule = _chunkT3YQ47EFjs.StripeCouponOfferModule; exports.StripeCouponService = _chunkT3YQ47EFjs.StripeCouponService; exports.StripeCustomer = _chunkT3YQ47EFjs.StripeCustomer; exports.StripeCustomerModule = _chunkT3YQ47EFjs.StripeCustomerModule; exports.StripeCustomerService = _chunkT3YQ47EFjs.StripeCustomerService; exports.StripeInvoice = _chunkT3YQ47EFjs.StripeInvoice; exports.StripeInvoiceModule = _chunkT3YQ47EFjs.StripeInvoiceModule; exports.StripeInvoiceService = _chunkT3YQ47EFjs.StripeInvoiceService; exports.StripePaymentMethodModule = _chunkT3YQ47EFjs.StripePaymentMethodModule; exports.StripePrice = _chunkT3YQ47EFjs.StripePrice; exports.StripePriceFields = _chunkT3YQ47EFjs.StripePriceFields; exports.StripePriceModule = _chunkT3YQ47EFjs.StripePriceModule; exports.StripePriceService = _chunkT3YQ47EFjs.StripePriceService; exports.StripeProduct = _chunkT3YQ47EFjs.StripeProduct; exports.StripeProductFields = _chunkT3YQ47EFjs.StripeProductFields; exports.StripeProductModule = _chunkT3YQ47EFjs.StripeProductModule; exports.StripeProductService = _chunkT3YQ47EFjs.StripeProductService; exports.StripePromotionCode = _chunkT3YQ47EFjs.StripePromotionCode; exports.StripePromotionCodeModule = _chunkT3YQ47EFjs.StripePromotionCodeModule; exports.StripePromotionCodeService = _chunkT3YQ47EFjs.StripePromotionCodeService; exports.StripeSubscription = _chunkT3YQ47EFjs.StripeSubscription; exports.StripeSubscriptionModule = _chunkT3YQ47EFjs.StripeSubscriptionModule; exports.StripeSubscriptionService = _chunkT3YQ47EFjs.StripeSubscriptionService; exports.StripeUsage = _chunkT3YQ47EFjs.StripeUsage; exports.StripeUsageModule = _chunkT3YQ47EFjs.StripeUsageModule; exports.StripeUsageService = _chunkT3YQ47EFjs.StripeUsageService; exports.SubscriptionStatus = _chunkT3YQ47EFjs.SubscriptionStatus; exports.TableOptions = _chunkT3YQ47EFjs.TableOptions; exports.TokenUsageAdminBreakdownModule = _chunkT3YQ47EFjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminSummaryModule = _chunkT3YQ47EFjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTimelineModule = _chunkT3YQ47EFjs.TokenUsageAdminTimelineModule; exports.TotpAuthenticator = _chunkT3YQ47EFjs.TotpAuthenticator; exports.TotpAuthenticatorModule = _chunkT3YQ47EFjs.TotpAuthenticatorModule; exports.TotpSetup = _chunkT3YQ47EFjs.TotpSetup; exports.TotpSetupModule = _chunkT3YQ47EFjs.TotpSetupModule; exports.TotpVerify = _chunkT3YQ47EFjs.TotpVerify; exports.TotpVerifyLogin = _chunkT3YQ47EFjs.TotpVerifyLogin; exports.TotpVerifyLoginModule = _chunkT3YQ47EFjs.TotpVerifyLoginModule; exports.TotpVerifyModule = _chunkT3YQ47EFjs.TotpVerifyModule; exports.TwoFactorChallenge = _chunkT3YQ47EFjs.TwoFactorChallenge; exports.TwoFactorChallengeModule = _chunkT3YQ47EFjs.TwoFactorChallengeModule; exports.TwoFactorEnable = _chunkT3YQ47EFjs.TwoFactorEnable; exports.TwoFactorEnableModule = _chunkT3YQ47EFjs.TwoFactorEnableModule; exports.TwoFactorService = _chunkT3YQ47EFjs.TwoFactorService; exports.TwoFactorStatus = _chunkT3YQ47EFjs.TwoFactorStatus; exports.TwoFactorStatusModule = _chunkT3YQ47EFjs.TwoFactorStatusModule; exports.User = _chunkT3YQ47EFjs.User; exports.UserFields = _chunkT3YQ47EFjs.UserFields; exports.UserModule = _chunkT3YQ47EFjs.UserModule; exports.UserService = _chunkT3YQ47EFjs.UserService; exports.VIEWPORT_COOKIE_NAME = _chunkT3YQ47EFjs.VIEWPORT_COOKIE_NAME; exports.Waitlist = _chunkT3YQ47EFjs.Waitlist; exports.WaitlistFields = _chunkT3YQ47EFjs.WaitlistFields; exports.WaitlistModule = _chunkT3YQ47EFjs.WaitlistModule; exports.WaitlistService = _chunkT3YQ47EFjs.WaitlistService; exports.WaitlistStats = _chunkT3YQ47EFjs.WaitlistStats; exports.WaitlistStatsModule = _chunkT3YQ47EFjs.WaitlistStatsModule; exports.analyticsModules = _chunkT3YQ47EFjs.analyticsModules; exports.captureSignupSource = _chunkF4JB7YAPjs.captureSignupSource; exports.checkPermissions = _chunkT3YQ47EFjs.checkPermissions; exports.checkPermissionsFromServer = _chunkT3YQ47EFjs.checkPermissionsFromServer; exports.clearLastApiMeta = _chunkT3YQ47EFjs.clearLastApiMeta; exports.clearLastApiTotal = _chunkT3YQ47EFjs.clearLastApiTotal; exports.cn = _chunkT3YQ47EFjs.cn; exports.composeRefs = _chunkT3YQ47EFjs.composeRefs; exports.configureAuth = _chunkT3YQ47EFjs.configureAuth; exports.configureI18n = _chunkT3YQ47EFjs.configureI18n; exports.configureJsonApi = _chunkF4JB7YAPjs.configureJsonApi; exports.configureLogin = _chunkF4JB7YAPjs.configureLogin; exports.configureReferral = _chunkF4JB7YAPjs.configureReferral; exports.configureRoles = _chunkG4JR3SFVjs.configureRoles; exports.configureTokenUsage = _chunkT3YQ47EFjs.configureTokenUsage; exports.configureWaitlist = _chunkF4JB7YAPjs.configureWaitlist; exports.couponPlacesLeft = _chunkT3YQ47EFjs.couponPlacesLeft; exports.couponPlacesTotal = _chunkT3YQ47EFjs.couponPlacesTotal; exports.createJsonApiInclusion = _chunkT3YQ47EFjs.createJsonApiInclusion; exports.dateFormatLocale = _chunkT3YQ47EFjs.dateFormatLocale; exports.dismissToast = _chunkT3YQ47EFjs.dismissToast; exports.entityObjectSchema = _chunkT3YQ47EFjs.entityObjectSchema; exports.exists = _chunkT3YQ47EFjs.exists; exports.formatCodiceFiscale = _chunkT3YQ47EFjs.formatCodiceFiscale; exports.formatCouponDiscount = _chunkT3YQ47EFjs.formatCouponDiscount; exports.formatCurrency = _chunkT3YQ47EFjs.formatCurrency; exports.formatDate = _chunkT3YQ47EFjs.formatDate; exports.formatFixed = _chunkT3YQ47EFjs.formatFixed; exports.formatInterval = _chunkT3YQ47EFjs.formatInterval; exports.formatLocalDate = _chunkT3YQ47EFjs.formatLocalDate; exports.formatPartitaIva = _chunkT3YQ47EFjs.formatPartitaIva; exports.getApiUrl = _chunkF4JB7YAPjs.getApiUrl; exports.getAppUrl = _chunkF4JB7YAPjs.getAppUrl; exports.getBootstrapper = _chunkGHE4VT2Rjs.getBootstrapper; exports.getClientGlobalErrorHandler = _chunkT3YQ47EFjs.getClientGlobalErrorHandler; exports.getGlobalErrorHandler = _chunkT3YQ47EFjs.getGlobalErrorHandler; exports.getIcon = _chunkT3YQ47EFjs.getIcon; exports.getIconByModule = _chunkT3YQ47EFjs.getIconByModule; exports.getIconByModuleName = _chunkT3YQ47EFjs.getIconByModuleName; exports.getInitials = _chunkT3YQ47EFjs.getInitials; exports.getLastApiMeta = _chunkT3YQ47EFjs.getLastApiMeta; exports.getLastApiTotal = _chunkT3YQ47EFjs.getLastApiTotal; exports.getLucideIcon = _chunkT3YQ47EFjs.getLucideIcon; exports.getLucideIconByModule = _chunkT3YQ47EFjs.getLucideIconByModule; exports.getLucideIconByModuleName = _chunkT3YQ47EFjs.getLucideIconByModuleName; exports.getPublicApiUrl = _chunkF4JB7YAPjs.getPublicApiUrl; exports.getReferralConfig = _chunkF4JB7YAPjs.getReferralConfig; exports.getRoleId = _chunkG4JR3SFVjs.getRoleId; exports.getSignupSource = _chunkF4JB7YAPjs.getSignupSource; exports.getStripePublishableKey = _chunkF4JB7YAPjs.getStripePublishableKey; exports.getTableComponents = _chunkT3YQ47EFjs.getTableComponents; exports.getTableOptions = _chunkT3YQ47EFjs.getTableOptions; exports.getTokenHandler = _chunkT3YQ47EFjs.getTokenHandler; exports.getTokenUsageCurrency = _chunkT3YQ47EFjs.getTokenUsageCurrency; exports.getTrackablePages = _chunkF4JB7YAPjs.getTrackablePages; exports.getValueFromPath = _chunkT3YQ47EFjs.getValueFromPath; exports.getWaitlistConfig = _chunkF4JB7YAPjs.getWaitlistConfig; exports.handbookPageContent = _chunkT3YQ47EFjs.handbookPageContent; exports.handbookPageSummary = _chunkT3YQ47EFjs.handbookPageSummary; exports.handbookPageTitle = _chunkT3YQ47EFjs.handbookPageTitle; exports.handbookSectionSummary = _chunkT3YQ47EFjs.handbookSectionSummary; exports.handbookSectionTitle = _chunkT3YQ47EFjs.handbookSectionTitle; exports.hasBootstrapper = _chunkGHE4VT2Rjs.hasBootstrapper; exports.isReferralEnabled = _chunkF4JB7YAPjs.isReferralEnabled; exports.isRemoteImageSrc = _chunkT3YQ47EFjs.isRemoteImageSrc; exports.isRolesConfigured = _chunkG4JR3SFVjs.isRolesConfigured; exports.mergeMessages = _chunkT3YQ47EFjs.mergeMessages; exports.readSignupSourceFromLocation = _chunkF4JB7YAPjs.readSignupSourceFromLocation; exports.rehydrate = _chunkT3YQ47EFjs.rehydrate; exports.rehydrateList = _chunkT3YQ47EFjs.rehydrateList; exports.resetBootstrapStore = _chunkGHE4VT2Rjs.resetBootstrapStore; exports.setBootstrapper = _chunkGHE4VT2Rjs.setBootstrapper; exports.setClientGlobalErrorHandler = _chunkT3YQ47EFjs.setClientGlobalErrorHandler; exports.setGlobalErrorHandler = _chunkT3YQ47EFjs.setGlobalErrorHandler; exports.showCustomToast = _chunkT3YQ47EFjs.showCustomToast; exports.showError = _chunkT3YQ47EFjs.showError; exports.showToast = _chunkT3YQ47EFjs.showToast; exports.toPromotionCodeResult = _chunkT3YQ47EFjs.toPromotionCodeResult; exports.tokenUsageModules = _chunkT3YQ47EFjs.tokenUsageModules; exports.translateData = _chunkGHE4VT2Rjs.translateData; exports.translateResponse = _chunkGHE4VT2Rjs.translateResponse; exports.tryBootstrap = _chunkGHE4VT2Rjs.tryBootstrap; exports.useComposedRefs = _chunkT3YQ47EFjs.useComposedRefs; exports.useIsMobile = _chunkT3YQ47EFjs.useIsMobile; exports.userObjectSchema = _chunkT3YQ47EFjs.userObjectSchema; exports.validateCodiceFiscale = _chunkT3YQ47EFjs.validateCodiceFiscale; exports.validateItalianTaxCode = _chunkT3YQ47EFjs.validateItalianTaxCode; exports.validatePartitaIva = _chunkT3YQ47EFjs.validatePartitaIva;
640
+ exports.ACTION_TYPES = _chunk3P3IYUWQjs.ACTION_TYPES; exports.AVAILABLE_OAUTH_SCOPES = _chunkGSHMGL6Njs.AVAILABLE_OAUTH_SCOPES; exports.AbstractApiData = _chunkGSHMGL6Njs.AbstractApiData; exports.AbstractService = _chunkGSHMGL6Njs.AbstractService; exports.Action = _chunkGSHMGL6Njs.Action; exports.AiConnection = _chunkGSHMGL6Njs.AiConnection; exports.AiConnectionFields = _chunkGSHMGL6Njs.AiConnectionFields; exports.AiConnectionModule = _chunkGSHMGL6Njs.AiConnectionModule; exports.AiConnectionService = _chunkGSHMGL6Njs.AiConnectionService; exports.Assistant = _chunkGSHMGL6Njs.Assistant; exports.AssistantAction = _chunkGSHMGL6Njs.AssistantAction; exports.AssistantActionModule = _chunkGSHMGL6Njs.AssistantActionModule; exports.AssistantActionService = _chunkGSHMGL6Njs.AssistantActionService; exports.AssistantMessage = _chunkGSHMGL6Njs.AssistantMessage; exports.AssistantMessageModule = _chunkGSHMGL6Njs.AssistantMessageModule; exports.AssistantMessageService = _chunkGSHMGL6Njs.AssistantMessageService; exports.AssistantModule = _chunkGSHMGL6Njs.AssistantModule; exports.AssistantService = _chunkGSHMGL6Njs.AssistantService; exports.AuditLog = _chunkGSHMGL6Njs.AuditLog; exports.AuditLogModule = _chunkGSHMGL6Njs.AuditLogModule; exports.AuditLogService = _chunkGSHMGL6Njs.AuditLogService; exports.Auth = _chunkGSHMGL6Njs.Auth; exports.AuthComponent = _chunkGSHMGL6Njs.AuthComponent; exports.AuthModule = _chunkGSHMGL6Njs.AuthModule; exports.AuthService = _chunkGSHMGL6Njs.AuthService; exports.AuthorModule = _chunkGSHMGL6Njs.AuthorModule; exports.BackupCodeVerify = _chunkGSHMGL6Njs.BackupCodeVerify; exports.BackupCodeVerifyModule = _chunkGSHMGL6Njs.BackupCodeVerifyModule; exports.Billing = _chunkGSHMGL6Njs.Billing; exports.BillingModule = _chunkGSHMGL6Njs.BillingModule; exports.BillingService = _chunkGSHMGL6Njs.BillingService; exports.BlockNoteDiffUtil = _chunkGSHMGL6Njs.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunkGSHMGL6Njs.BlockNoteWordDiffRendererUtil; exports.BlogCategory = _chunkGSHMGL6Njs.BlogCategory; exports.BlogCategoryFields = _chunkGSHMGL6Njs.BlogCategoryFields; exports.BlogCategoryModule = _chunkGSHMGL6Njs.BlogCategoryModule; exports.BlogCategoryService = _chunkGSHMGL6Njs.BlogCategoryService; exports.BlogCategoryTranslation = _chunkGSHMGL6Njs.BlogCategoryTranslation; exports.BlogCategoryTranslationModule = _chunkGSHMGL6Njs.BlogCategoryTranslationModule; exports.BlogCategoryTranslationService = _chunkGSHMGL6Njs.BlogCategoryTranslationService; exports.BlogPost = _chunkGSHMGL6Njs.BlogPost; exports.BlogPostFields = _chunkGSHMGL6Njs.BlogPostFields; exports.BlogPostModule = _chunkGSHMGL6Njs.BlogPostModule; exports.BlogPostService = _chunkGSHMGL6Njs.BlogPostService; exports.BlogPostTranslation = _chunkGSHMGL6Njs.BlogPostTranslation; exports.BlogPostTranslationModule = _chunkGSHMGL6Njs.BlogPostTranslationModule; exports.BlogPostTranslationService = _chunkGSHMGL6Njs.BlogPostTranslationService; exports.BlogSettings = _chunkGSHMGL6Njs.BlogSettings; exports.BlogSettingsModule = _chunkGSHMGL6Njs.BlogSettingsModule; exports.BlogSettingsService = _chunkGSHMGL6Njs.BlogSettingsService; exports.COMPANY_ADMINISTRATOR_ROLE_ID = _chunk3P3IYUWQjs.COMPANY_ADMINISTRATOR_ROLE_ID; exports.CURRENT_USER_STORAGE_KEY = _chunkGSHMGL6Njs.CURRENT_USER_STORAGE_KEY; exports.Chunk = _chunkGSHMGL6Njs.Chunk; exports.ChunkModule = _chunkGSHMGL6Njs.ChunkModule; exports.ClientAbstractService = _chunkGSHMGL6Njs.ClientAbstractService; exports.ClientHttpMethod = _chunkGSHMGL6Njs.ClientHttpMethod; exports.Company = _chunkGSHMGL6Njs.Company; exports.CompanyFields = _chunkGSHMGL6Njs.CompanyFields; exports.CompanyModule = _chunkGSHMGL6Njs.CompanyModule; exports.CompanyService = _chunkGSHMGL6Njs.CompanyService; exports.Content = _chunkGSHMGL6Njs.Content; exports.ContentFields = _chunkGSHMGL6Njs.ContentFields; exports.ContentModule = _chunkGSHMGL6Njs.ContentModule; exports.ContentService = _chunkGSHMGL6Njs.ContentService; exports.DEFAULT_GRANT_TYPES = _chunkGSHMGL6Njs.DEFAULT_GRANT_TYPES; exports.DataClass = _chunkGHE4VT2Rjs.DataClassRegistry; exports.DataClassRegistry = _chunkGHE4VT2Rjs.DataClassRegistry; exports.EMAIL_AUTOMATION_UNSUBSCRIBE_TYPE = _chunkGSHMGL6Njs.EMAIL_AUTOMATION_UNSUBSCRIBE_TYPE; exports.ENV = _chunkGHE4VT2Rjs.ENV; exports.EmailAutomation = _chunkGSHMGL6Njs.EmailAutomation; exports.EmailAutomationEnrollment = _chunkGSHMGL6Njs.EmailAutomationEnrollment; exports.EmailAutomationEnrollmentFields = _chunkGSHMGL6Njs.EmailAutomationEnrollmentFields; exports.EmailAutomationEnrollmentModule = _chunkGSHMGL6Njs.EmailAutomationEnrollmentModule; exports.EmailAutomationEnrollmentService = _chunkGSHMGL6Njs.EmailAutomationEnrollmentService; exports.EmailAutomationFields = _chunkGSHMGL6Njs.EmailAutomationFields; exports.EmailAutomationModule = _chunkGSHMGL6Njs.EmailAutomationModule; exports.EmailAutomationService = _chunkGSHMGL6Njs.EmailAutomationService; exports.EmailAutomationStep = _chunkGSHMGL6Njs.EmailAutomationStep; exports.EmailAutomationStepModule = _chunkGSHMGL6Njs.EmailAutomationStepModule; exports.EmailAutomationStepService = _chunkGSHMGL6Njs.EmailAutomationStepService; exports.EmailAutomationTrigger = _chunkGSHMGL6Njs.EmailAutomationTrigger; exports.EmailAutomationTriggerModule = _chunkGSHMGL6Njs.EmailAutomationTriggerModule; exports.EndpointCreator = _chunkGSHMGL6Njs.EndpointCreator; exports.EntityAiStatus = _chunkGSHMGL6Njs.EntityAiStatus; exports.Feature = _chunkGSHMGL6Njs.Feature; exports.FeatureModule = _chunkGSHMGL6Njs.FeatureModule; exports.FeatureService = _chunkGSHMGL6Njs.FeatureService; exports.HandbookPage = _chunkGSHMGL6Njs.HandbookPage; exports.HandbookPageFields = _chunkGSHMGL6Njs.HandbookPageFields; exports.HandbookPageModule = _chunkGSHMGL6Njs.HandbookPageModule; exports.HandbookPageService = _chunkGSHMGL6Njs.HandbookPageService; exports.HandbookSection = _chunkGSHMGL6Njs.HandbookSection; exports.HandbookSectionModule = _chunkGSHMGL6Njs.HandbookSectionModule; exports.HandbookSectionService = _chunkGSHMGL6Njs.HandbookSectionService; exports.HandbookThread = _chunkGSHMGL6Njs.HandbookThread; exports.HandbookThreadMessage = _chunkGSHMGL6Njs.HandbookThreadMessage; exports.HandbookThreadMessageModule = _chunkGSHMGL6Njs.HandbookThreadMessageModule; exports.HandbookThreadMessageService = _chunkGSHMGL6Njs.HandbookThreadMessageService; exports.HandbookThreadModule = _chunkGSHMGL6Njs.HandbookThreadModule; exports.HandbookThreadService = _chunkGSHMGL6Njs.HandbookThreadService; exports.HowTo = _chunkGSHMGL6Njs.HowTo; exports.HowToFields = _chunkGSHMGL6Njs.HowToFields; exports.HowToModule = _chunkGSHMGL6Njs.HowToModule; exports.HowToService = _chunkGSHMGL6Njs.HowToService; exports.HttpMethod = _chunkGSHMGL6Njs.HttpMethod; exports.InvoiceStatus = _chunkGSHMGL6Njs.InvoiceStatus; exports.JsonApiDataFactory = _chunkGHE4VT2Rjs.JsonApiDataFactory; exports.MOBILE_BREAKPOINT = _chunkGSHMGL6Njs.MOBILE_BREAKPOINT; exports.Module = _chunkGSHMGL6Njs.Module; exports.ModuleModule = _chunkGSHMGL6Njs.ModuleModule; exports.ModulePaths = _chunkGSHMGL6Njs.ModulePaths; exports.ModulePathsModule = _chunkGSHMGL6Njs.ModulePathsModule; exports.ModuleRegistrar = _chunkGSHMGL6Njs.ModuleRegistrar; exports.ModuleRegistry = _chunkGSHMGL6Njs.ModuleRegistry; exports.Modules = _chunkGSHMGL6Njs.Modules; exports.Notification = _chunkGSHMGL6Njs.Notification; exports.NotificationFields = _chunkGSHMGL6Njs.NotificationFields; exports.NotificationModule = _chunkGSHMGL6Njs.NotificationModule; exports.NotificationService = _chunkGSHMGL6Njs.NotificationService; exports.OAUTH_SCOPE_DISPLAY = _chunkGSHMGL6Njs.OAUTH_SCOPE_DISPLAY; exports.OAuthClient = _chunkGSHMGL6Njs.OAuthClient; exports.OAuthModule = _chunkGSHMGL6Njs.OAuthModule; exports.OAuthService = _chunkGSHMGL6Njs.OAuthService; exports.Passkey = _chunkGSHMGL6Njs.Passkey; exports.PasskeyAuthenticationOptions = _chunkGSHMGL6Njs.PasskeyAuthenticationOptions; exports.PasskeyAuthenticationOptionsModule = _chunkGSHMGL6Njs.PasskeyAuthenticationOptionsModule; exports.PasskeyModule = _chunkGSHMGL6Njs.PasskeyModule; exports.PasskeyRegistrationOptions = _chunkGSHMGL6Njs.PasskeyRegistrationOptions; exports.PasskeyRegistrationOptionsModule = _chunkGSHMGL6Njs.PasskeyRegistrationOptionsModule; exports.PasskeyRegistrationVerify = _chunkGSHMGL6Njs.PasskeyRegistrationVerify; exports.PasskeyRegistrationVerifyModule = _chunkGSHMGL6Njs.PasskeyRegistrationVerifyModule; exports.PasskeyRename = _chunkGSHMGL6Njs.PasskeyRename; exports.PasskeyRenameModule = _chunkGSHMGL6Njs.PasskeyRenameModule; exports.PasskeyVerifyLogin = _chunkGSHMGL6Njs.PasskeyVerifyLogin; exports.PasskeyVerifyLoginModule = _chunkGSHMGL6Njs.PasskeyVerifyLoginModule; exports.PaymentMethod = _chunkGSHMGL6Njs.PaymentMethod; exports.PermissionMapping = _chunkGSHMGL6Njs.PermissionMapping; exports.PermissionMappingModule = _chunkGSHMGL6Njs.PermissionMappingModule; exports.Push = _chunkGSHMGL6Njs.Push; exports.PushModule = _chunkGSHMGL6Njs.PushModule; exports.PushService = _chunkGSHMGL6Njs.PushService; exports.RbacMatrixModel = _chunkGSHMGL6Njs.RbacMatrixModel; exports.RbacMatrixModule = _chunkGSHMGL6Njs.RbacMatrixModule; exports.RbacService = _chunk3P3IYUWQjs.RbacService; exports.ReferralModule = _chunkGSHMGL6Njs.ReferralModule; exports.ReferralService = _chunkGSHMGL6Njs.ReferralService; exports.ReferralStats = _chunkGSHMGL6Njs.ReferralStats; exports.ReferralStatsModule = _chunkGSHMGL6Njs.ReferralStatsModule; exports.RehydrationFactory = _chunkGSHMGL6Njs.RehydrationFactory; exports.Role = _chunkGSHMGL6Njs.Role; exports.RoleFields = _chunkGSHMGL6Njs.RoleFields; exports.RoleModule = _chunkGSHMGL6Njs.RoleModule; exports.RoleService = _chunkGSHMGL6Njs.RoleService; exports.S3 = _chunkGSHMGL6Njs.S3; exports.S3Module = _chunkGSHMGL6Njs.S3Module; exports.S3Service = _chunkGSHMGL6Njs.S3Service; exports.SIGNUP_SOURCE_COOKIE = _chunk3P3IYUWQjs.SIGNUP_SOURCE_COOKIE; exports.SIGNUP_SOURCE_COOKIE_MAX_AGE = _chunk3P3IYUWQjs.SIGNUP_SOURCE_COOKIE_MAX_AGE; exports.STRIPE_COUPON_CODE_AUTOMATIC_SEGMENT = _chunkGSHMGL6Njs.STRIPE_COUPON_CODE_AUTOMATIC_SEGMENT; exports.STRIPE_COUPON_DETAIL_PAGE_URL = _chunkGSHMGL6Njs.STRIPE_COUPON_DETAIL_PAGE_URL; exports.STRIPE_COUPON_REFRESH_SEGMENT = _chunkGSHMGL6Njs.STRIPE_COUPON_REFRESH_SEGMENT; exports.StripeCoupon = _chunkGSHMGL6Njs.StripeCoupon; exports.StripeCouponCode = _chunkGSHMGL6Njs.StripeCouponCode; exports.StripeCouponCodeFields = _chunkGSHMGL6Njs.StripeCouponCodeFields; exports.StripeCouponCodeModule = _chunkGSHMGL6Njs.StripeCouponCodeModule; exports.StripeCouponCodeService = _chunkGSHMGL6Njs.StripeCouponCodeService; exports.StripeCouponFields = _chunkGSHMGL6Njs.StripeCouponFields; exports.StripeCouponModule = _chunkGSHMGL6Njs.StripeCouponModule; exports.StripeCouponOffer = _chunkGSHMGL6Njs.StripeCouponOffer; exports.StripeCouponOfferModule = _chunkGSHMGL6Njs.StripeCouponOfferModule; exports.StripeCouponService = _chunkGSHMGL6Njs.StripeCouponService; exports.StripeCustomer = _chunkGSHMGL6Njs.StripeCustomer; exports.StripeCustomerModule = _chunkGSHMGL6Njs.StripeCustomerModule; exports.StripeCustomerService = _chunkGSHMGL6Njs.StripeCustomerService; exports.StripeInvoice = _chunkGSHMGL6Njs.StripeInvoice; exports.StripeInvoiceModule = _chunkGSHMGL6Njs.StripeInvoiceModule; exports.StripeInvoiceService = _chunkGSHMGL6Njs.StripeInvoiceService; exports.StripePaymentMethodModule = _chunkGSHMGL6Njs.StripePaymentMethodModule; exports.StripePrice = _chunkGSHMGL6Njs.StripePrice; exports.StripePriceFields = _chunkGSHMGL6Njs.StripePriceFields; exports.StripePriceModule = _chunkGSHMGL6Njs.StripePriceModule; exports.StripePriceService = _chunkGSHMGL6Njs.StripePriceService; exports.StripeProduct = _chunkGSHMGL6Njs.StripeProduct; exports.StripeProductFields = _chunkGSHMGL6Njs.StripeProductFields; exports.StripeProductModule = _chunkGSHMGL6Njs.StripeProductModule; exports.StripeProductService = _chunkGSHMGL6Njs.StripeProductService; exports.StripePromotionCode = _chunkGSHMGL6Njs.StripePromotionCode; exports.StripePromotionCodeModule = _chunkGSHMGL6Njs.StripePromotionCodeModule; exports.StripePromotionCodeService = _chunkGSHMGL6Njs.StripePromotionCodeService; exports.StripeSubscription = _chunkGSHMGL6Njs.StripeSubscription; exports.StripeSubscriptionModule = _chunkGSHMGL6Njs.StripeSubscriptionModule; exports.StripeSubscriptionService = _chunkGSHMGL6Njs.StripeSubscriptionService; exports.StripeUsage = _chunkGSHMGL6Njs.StripeUsage; exports.StripeUsageModule = _chunkGSHMGL6Njs.StripeUsageModule; exports.StripeUsageService = _chunkGSHMGL6Njs.StripeUsageService; exports.SubscriptionStatus = _chunkGSHMGL6Njs.SubscriptionStatus; exports.TableOptions = _chunkGSHMGL6Njs.TableOptions; exports.TokenUsageAdminBreakdownModule = _chunkGSHMGL6Njs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminSummaryModule = _chunkGSHMGL6Njs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTimelineModule = _chunkGSHMGL6Njs.TokenUsageAdminTimelineModule; exports.TotpAuthenticator = _chunkGSHMGL6Njs.TotpAuthenticator; exports.TotpAuthenticatorModule = _chunkGSHMGL6Njs.TotpAuthenticatorModule; exports.TotpSetup = _chunkGSHMGL6Njs.TotpSetup; exports.TotpSetupModule = _chunkGSHMGL6Njs.TotpSetupModule; exports.TotpVerify = _chunkGSHMGL6Njs.TotpVerify; exports.TotpVerifyLogin = _chunkGSHMGL6Njs.TotpVerifyLogin; exports.TotpVerifyLoginModule = _chunkGSHMGL6Njs.TotpVerifyLoginModule; exports.TotpVerifyModule = _chunkGSHMGL6Njs.TotpVerifyModule; exports.TwoFactorChallenge = _chunkGSHMGL6Njs.TwoFactorChallenge; exports.TwoFactorChallengeModule = _chunkGSHMGL6Njs.TwoFactorChallengeModule; exports.TwoFactorEnable = _chunkGSHMGL6Njs.TwoFactorEnable; exports.TwoFactorEnableModule = _chunkGSHMGL6Njs.TwoFactorEnableModule; exports.TwoFactorService = _chunkGSHMGL6Njs.TwoFactorService; exports.TwoFactorStatus = _chunkGSHMGL6Njs.TwoFactorStatus; exports.TwoFactorStatusModule = _chunkGSHMGL6Njs.TwoFactorStatusModule; exports.User = _chunkGSHMGL6Njs.User; exports.UserFields = _chunkGSHMGL6Njs.UserFields; exports.UserModule = _chunkGSHMGL6Njs.UserModule; exports.UserService = _chunkGSHMGL6Njs.UserService; exports.VIEWPORT_COOKIE_NAME = _chunkGSHMGL6Njs.VIEWPORT_COOKIE_NAME; exports.Waitlist = _chunkGSHMGL6Njs.Waitlist; exports.WaitlistFields = _chunkGSHMGL6Njs.WaitlistFields; exports.WaitlistModule = _chunkGSHMGL6Njs.WaitlistModule; exports.WaitlistService = _chunkGSHMGL6Njs.WaitlistService; exports.WaitlistStats = _chunkGSHMGL6Njs.WaitlistStats; exports.WaitlistStatsModule = _chunkGSHMGL6Njs.WaitlistStatsModule; exports.analyticsModules = _chunkGSHMGL6Njs.analyticsModules; exports.captureSignupSource = _chunk3P3IYUWQjs.captureSignupSource; exports.checkPermissions = _chunkGSHMGL6Njs.checkPermissions; exports.checkPermissionsFromServer = _chunkGSHMGL6Njs.checkPermissionsFromServer; exports.clearLastApiMeta = _chunkGSHMGL6Njs.clearLastApiMeta; exports.clearLastApiTotal = _chunkGSHMGL6Njs.clearLastApiTotal; exports.cn = _chunkGSHMGL6Njs.cn; exports.composeRefs = _chunkGSHMGL6Njs.composeRefs; exports.configureAuth = _chunkGSHMGL6Njs.configureAuth; exports.configureI18n = _chunkGSHMGL6Njs.configureI18n; exports.configureJsonApi = _chunk3P3IYUWQjs.configureJsonApi; exports.configureLogin = _chunk3P3IYUWQjs.configureLogin; exports.configureReferral = _chunk3P3IYUWQjs.configureReferral; exports.configureRoles = _chunkG4JR3SFVjs.configureRoles; exports.configureTokenUsage = _chunkGSHMGL6Njs.configureTokenUsage; exports.configureWaitlist = _chunk3P3IYUWQjs.configureWaitlist; exports.couponPlacesLeft = _chunkGSHMGL6Njs.couponPlacesLeft; exports.couponPlacesTotal = _chunkGSHMGL6Njs.couponPlacesTotal; exports.createJsonApiInclusion = _chunkGSHMGL6Njs.createJsonApiInclusion; exports.dateFormatLocale = _chunkGSHMGL6Njs.dateFormatLocale; exports.dismissToast = _chunkGSHMGL6Njs.dismissToast; exports.entityObjectSchema = _chunkGSHMGL6Njs.entityObjectSchema; exports.exists = _chunkGSHMGL6Njs.exists; exports.formatCodiceFiscale = _chunkGSHMGL6Njs.formatCodiceFiscale; exports.formatCouponDiscount = _chunkGSHMGL6Njs.formatCouponDiscount; exports.formatCurrency = _chunkGSHMGL6Njs.formatCurrency; exports.formatDate = _chunkGSHMGL6Njs.formatDate; exports.formatFixed = _chunkGSHMGL6Njs.formatFixed; exports.formatInterval = _chunkGSHMGL6Njs.formatInterval; exports.formatLocalDate = _chunkGSHMGL6Njs.formatLocalDate; exports.formatPartitaIva = _chunkGSHMGL6Njs.formatPartitaIva; exports.getApiUrl = _chunk3P3IYUWQjs.getApiUrl; exports.getAppUrl = _chunk3P3IYUWQjs.getAppUrl; exports.getBootstrapper = _chunkGHE4VT2Rjs.getBootstrapper; exports.getClientGlobalErrorHandler = _chunkGSHMGL6Njs.getClientGlobalErrorHandler; exports.getGlobalErrorHandler = _chunkGSHMGL6Njs.getGlobalErrorHandler; exports.getIcon = _chunkGSHMGL6Njs.getIcon; exports.getIconByModule = _chunkGSHMGL6Njs.getIconByModule; exports.getIconByModuleName = _chunkGSHMGL6Njs.getIconByModuleName; exports.getInitials = _chunkGSHMGL6Njs.getInitials; exports.getLastApiMeta = _chunkGSHMGL6Njs.getLastApiMeta; exports.getLastApiTotal = _chunkGSHMGL6Njs.getLastApiTotal; exports.getLucideIcon = _chunkGSHMGL6Njs.getLucideIcon; exports.getLucideIconByModule = _chunkGSHMGL6Njs.getLucideIconByModule; exports.getLucideIconByModuleName = _chunkGSHMGL6Njs.getLucideIconByModuleName; exports.getPublicApiUrl = _chunk3P3IYUWQjs.getPublicApiUrl; exports.getReferralConfig = _chunk3P3IYUWQjs.getReferralConfig; exports.getRoleId = _chunkG4JR3SFVjs.getRoleId; exports.getSignupSource = _chunk3P3IYUWQjs.getSignupSource; exports.getStripePublishableKey = _chunk3P3IYUWQjs.getStripePublishableKey; exports.getTableComponents = _chunkGSHMGL6Njs.getTableComponents; exports.getTableOptions = _chunkGSHMGL6Njs.getTableOptions; exports.getTokenHandler = _chunkGSHMGL6Njs.getTokenHandler; exports.getTokenUsageCurrency = _chunkGSHMGL6Njs.getTokenUsageCurrency; exports.getTrackablePages = _chunk3P3IYUWQjs.getTrackablePages; exports.getValueFromPath = _chunkGSHMGL6Njs.getValueFromPath; exports.getWaitlistConfig = _chunk3P3IYUWQjs.getWaitlistConfig; exports.handbookPageContent = _chunkGSHMGL6Njs.handbookPageContent; exports.handbookPageSummary = _chunkGSHMGL6Njs.handbookPageSummary; exports.handbookPageTitle = _chunkGSHMGL6Njs.handbookPageTitle; exports.handbookSectionSummary = _chunkGSHMGL6Njs.handbookSectionSummary; exports.handbookSectionTitle = _chunkGSHMGL6Njs.handbookSectionTitle; exports.hasBootstrapper = _chunkGHE4VT2Rjs.hasBootstrapper; exports.isReferralEnabled = _chunk3P3IYUWQjs.isReferralEnabled; exports.isRemoteImageSrc = _chunkGSHMGL6Njs.isRemoteImageSrc; exports.isRolesConfigured = _chunkG4JR3SFVjs.isRolesConfigured; exports.mergeMessages = _chunkGSHMGL6Njs.mergeMessages; exports.readSignupSourceFromLocation = _chunk3P3IYUWQjs.readSignupSourceFromLocation; exports.rehydrate = _chunkGSHMGL6Njs.rehydrate; exports.rehydrateList = _chunkGSHMGL6Njs.rehydrateList; exports.resetBootstrapStore = _chunkGHE4VT2Rjs.resetBootstrapStore; exports.setBootstrapper = _chunkGHE4VT2Rjs.setBootstrapper; exports.setClientGlobalErrorHandler = _chunkGSHMGL6Njs.setClientGlobalErrorHandler; exports.setGlobalErrorHandler = _chunkGSHMGL6Njs.setGlobalErrorHandler; exports.showCustomToast = _chunkGSHMGL6Njs.showCustomToast; exports.showError = _chunkGSHMGL6Njs.showError; exports.showToast = _chunkGSHMGL6Njs.showToast; exports.toPromotionCodeResult = _chunkGSHMGL6Njs.toPromotionCodeResult; exports.tokenUsageModules = _chunkGSHMGL6Njs.tokenUsageModules; exports.translateData = _chunkGHE4VT2Rjs.translateData; exports.translateResponse = _chunkGHE4VT2Rjs.translateResponse; exports.tryBootstrap = _chunkGHE4VT2Rjs.tryBootstrap; exports.useComposedRefs = _chunkGSHMGL6Njs.useComposedRefs; exports.useIsMobile = _chunkGSHMGL6Njs.useIsMobile; exports.userObjectSchema = _chunkGSHMGL6Njs.userObjectSchema; exports.validateCodiceFiscale = _chunkGSHMGL6Njs.validateCodiceFiscale; exports.validateItalianTaxCode = _chunkGSHMGL6Njs.validateItalianTaxCode; exports.validatePartitaIva = _chunkGSHMGL6Njs.validatePartitaIva;
641
641
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  getWaitlistConfig,
20
20
  isReferralEnabled,
21
21
  readSignupSourceFromLocation
22
- } from "./chunk-JVJS5RHB.mjs";
22
+ } from "./chunk-CUNSPLOD.mjs";
23
23
  import {
24
24
  configureRoles,
25
25
  getRoleId,
@@ -306,7 +306,7 @@ import {
306
306
  validateCodiceFiscale,
307
307
  validateItalianTaxCode,
308
308
  validatePartitaIva
309
- } from "./chunk-USYZNWKS.mjs";
309
+ } from "./chunk-QKDPCZ3G.mjs";
310
310
  import {
311
311
  DataClassRegistry,
312
312
  ENV,
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkMTI2UXDAjs = require('../chunk-MTI2UXDA.js');
6
+ var _chunkUEWDYVLWjs = require('../chunk-UEWDYVLW.js');
7
7
 
8
8
 
9
9
  var _chunkIK65TDQHjs = require('../chunk-IK65TDQH.js');
@@ -35,7 +35,7 @@ require('../chunk-G4JR3SFV.js');
35
35
 
36
36
 
37
37
 
38
- var _chunkT3YQ47EFjs = require('../chunk-T3YQ47EF.js');
38
+ var _chunkGSHMGL6Njs = require('../chunk-GSHMGL6N.js');
39
39
  require('../chunk-GHE4VT2R.js');
40
40
  require('../chunk-LXKSUWAV.js');
41
41
  require('../chunk-JTPRJNT2.js');
@@ -66,5 +66,5 @@ require('../chunk-7QVYU63E.js');
66
66
 
67
67
 
68
68
 
69
- exports.CACHE_PROFILES = _chunkIK65TDQHjs.CACHE_PROFILES; exports.ServerAuthService = _chunkT3YQ47EFjs.AuthService; exports.ServerCompanyService = _chunkT3YQ47EFjs.CompanyService; exports.ServerContentService = _chunkT3YQ47EFjs.ContentService; exports.ServerFeatureService = _chunkT3YQ47EFjs.FeatureService; exports.ServerJsonApiDelete = _chunkKSYQEKJXjs.ServerJsonApiDelete; exports.ServerJsonApiGet = _chunkKSYQEKJXjs.ServerJsonApiGet; exports.ServerJsonApiPatch = _chunkKSYQEKJXjs.ServerJsonApiPatch; exports.ServerJsonApiPost = _chunkKSYQEKJXjs.ServerJsonApiPost; exports.ServerJsonApiPut = _chunkKSYQEKJXjs.ServerJsonApiPut; exports.ServerNotificationService = _chunkT3YQ47EFjs.NotificationService; exports.ServerPushService = _chunkT3YQ47EFjs.PushService; exports.ServerRoleService = _chunkT3YQ47EFjs.RoleService; exports.ServerS3Service = _chunkT3YQ47EFjs.S3Service; exports.ServerSession = _chunkMTI2UXDAjs.ServerSession; exports.ServerUserService = _chunkT3YQ47EFjs.UserService; exports.configureServerJsonApi = _chunkKSYQEKJXjs.configureServerJsonApi; exports.getServerApiUrl = _chunkKSYQEKJXjs.getServerApiUrl; exports.getServerAppUrl = _chunkKSYQEKJXjs.getServerAppUrl; exports.getServerToken = _chunkYUO55Q5Ajs.getServerToken; exports.getServerTrackablePages = _chunkKSYQEKJXjs.getServerTrackablePages; exports.invalidateCacheTag = _chunkMTI2UXDAjs.invalidateCacheTag; exports.invalidateCacheTags = _chunkMTI2UXDAjs.invalidateCacheTags; exports.serverRequest = _chunk6TUB7Y6Tjs.serverRequest; exports.updateCacheTag = _chunkMTI2UXDAjs.updateCacheTag;
69
+ exports.CACHE_PROFILES = _chunkIK65TDQHjs.CACHE_PROFILES; exports.ServerAuthService = _chunkGSHMGL6Njs.AuthService; exports.ServerCompanyService = _chunkGSHMGL6Njs.CompanyService; exports.ServerContentService = _chunkGSHMGL6Njs.ContentService; exports.ServerFeatureService = _chunkGSHMGL6Njs.FeatureService; exports.ServerJsonApiDelete = _chunkKSYQEKJXjs.ServerJsonApiDelete; exports.ServerJsonApiGet = _chunkKSYQEKJXjs.ServerJsonApiGet; exports.ServerJsonApiPatch = _chunkKSYQEKJXjs.ServerJsonApiPatch; exports.ServerJsonApiPost = _chunkKSYQEKJXjs.ServerJsonApiPost; exports.ServerJsonApiPut = _chunkKSYQEKJXjs.ServerJsonApiPut; exports.ServerNotificationService = _chunkGSHMGL6Njs.NotificationService; exports.ServerPushService = _chunkGSHMGL6Njs.PushService; exports.ServerRoleService = _chunkGSHMGL6Njs.RoleService; exports.ServerS3Service = _chunkGSHMGL6Njs.S3Service; exports.ServerSession = _chunkUEWDYVLWjs.ServerSession; exports.ServerUserService = _chunkGSHMGL6Njs.UserService; exports.configureServerJsonApi = _chunkKSYQEKJXjs.configureServerJsonApi; exports.getServerApiUrl = _chunkKSYQEKJXjs.getServerApiUrl; exports.getServerAppUrl = _chunkKSYQEKJXjs.getServerAppUrl; exports.getServerToken = _chunkYUO55Q5Ajs.getServerToken; exports.getServerTrackablePages = _chunkKSYQEKJXjs.getServerTrackablePages; exports.invalidateCacheTag = _chunkUEWDYVLWjs.invalidateCacheTag; exports.invalidateCacheTags = _chunkUEWDYVLWjs.invalidateCacheTags; exports.serverRequest = _chunk6TUB7Y6Tjs.serverRequest; exports.updateCacheTag = _chunkUEWDYVLWjs.updateCacheTag;
70
70
  //# sourceMappingURL=index.js.map
@@ -3,7 +3,7 @@ import {
3
3
  invalidateCacheTag,
4
4
  invalidateCacheTags,
5
5
  updateCacheTag
6
- } from "../chunk-GFGKMUPZ.mjs";
6
+ } from "../chunk-HLW3SUMD.mjs";
7
7
  import {
8
8
  CACHE_PROFILES
9
9
  } from "../chunk-T7SAW3UW.mjs";
@@ -35,7 +35,7 @@ import {
35
35
  RoleService,
36
36
  S3Service,
37
37
  UserService
38
- } from "../chunk-USYZNWKS.mjs";
38
+ } from "../chunk-QKDPCZ3G.mjs";
39
39
  import "../chunk-V5MI7RNB.mjs";
40
40
  import "../chunk-AUXK7QSA.mjs";
41
41
  import "../chunk-PI56A4DG.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nextjs-jsonapi",
3
- "version": "6.1.0",
3
+ "version": "6.2.0",
4
4
  "description": "Next.js JSON:API client with server/client support and caching",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",
@@ -20,7 +20,13 @@ type Attribution = Pick<
20
20
  >;
21
21
 
22
22
  type AnalyticsTrackerProps = {
23
- hasConsent: boolean;
23
+ /**
24
+ * `undefined` while the app has not read its consent store yet: the tracker sends
25
+ * nothing and leaves the visitor cookie alone. `false` when there is no consent
26
+ * (refused or not chosen yet): the cookie is cleared and page views go out without
27
+ * an id. Never pass `false` as a placeholder for "not read yet".
28
+ */
29
+ hasConsent?: boolean;
24
30
  resolveSection: (pathname: string) => "public" | "app";
25
31
  sensitivePrefixes?: string[];
26
32
  };
@@ -63,11 +69,16 @@ function maskSensitivePath(path: string, sensitivePrefixes: string[] | undefined
63
69
  export function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes }: AnalyticsTrackerProps): null {
64
70
  const pathname = usePathname();
65
71
  const lastPath = useRef<string | null>(null);
66
- const lastConsent = useRef<boolean>(false);
72
+ // The last consent value the app actually read. `undefined` until then, so a page
73
+ // load with consent already stored is never mistaken for the Accept click.
74
+ const lastKnownConsent = useRef<boolean | undefined>(undefined);
67
75
  const attribution = useRef<Attribution | null>(null);
68
76
 
69
77
  useEffect(() => {
70
- if (!hasConsent) clearVisitorCookie();
78
+ // Consent not read yet: send nothing and keep the cookie, or a visitor who
79
+ // already accepted would lose their id on every tracker mount.
80
+ if (hasConsent === undefined) return;
81
+ if (hasConsent === false) clearVisitorCookie();
71
82
 
72
83
  if (!pathname) return;
73
84
  if (typeof navigator !== "undefined" && navigator.webdriver) return;
@@ -75,12 +86,13 @@ export function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes
75
86
  const path = pathname.split(/[?#]/)[0] || "/";
76
87
  if (path.startsWith(EXCLUDED_PREFIX)) return;
77
88
 
78
- // One event per distinct path. The same path is sent again only when consent
79
- // was just granted, so the processor starts a new visitor on the cookie id.
89
+ // One event per distinct path. The same path is sent again only when the
90
+ // visitor clicks Accept (a known `false` turning `true`), flagged so the API
91
+ // moves the open cookieless session onto the cookie id.
80
92
  const isNewPath = lastPath.current !== path;
81
- const consentJustGranted = hasConsent && !lastConsent.current;
82
- lastConsent.current = hasConsent;
83
- if (!isNewPath && !consentJustGranted) return;
93
+ const consentGranted = hasConsent === true && lastKnownConsent.current === false;
94
+ lastKnownConsent.current = hasConsent;
95
+ if (!isNewPath && !consentGranted) return;
84
96
  lastPath.current = path;
85
97
 
86
98
  const sentPath = maskSensitivePath(path, sensitivePrefixes);
@@ -93,6 +105,7 @@ export function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes
93
105
  };
94
106
 
95
107
  if (hasConsent) input.visitorId = ensureVisitorCookie();
108
+ if (consentGranted) input.consentGranted = true;
96
109
 
97
110
  // The first event of the page load carries the attribution. The event sent
98
111
  // because consent was just granted carries it again, so the session opened
@@ -102,7 +115,7 @@ export function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes
102
115
  const referrer = readExternalReferrer();
103
116
  attribution.current = { ...(referrer ? { referrer } : {}), ...readUtm(window.location.search) };
104
117
  }
105
- if (isFirstEvent || consentJustGranted) Object.assign(input, attribution.current);
118
+ if (isFirstEvent || consentGranted) Object.assign(input, attribution.current);
106
119
 
107
120
  // AnalyticsService.track never rejects: it logs and swallows its own failures.
108
121
  void AnalyticsService.track(input);
@@ -215,6 +215,73 @@ describe("AnalyticsTracker", () => {
215
215
  expect(eventAt(1)).toEqual(expect.objectContaining({ path: "/pricing", visitorId: expect.stringMatching(UUID) }));
216
216
  });
217
217
 
218
+ it("sends nothing and keeps the cookie while consent is unknown", () => {
219
+ document.cookie = "analytics_visitor=keep-me; path=/";
220
+ mocks.pathname = "/";
221
+ const { rerender } = render(<AnalyticsTracker hasConsent={undefined} resolveSection={publicSection} />);
222
+
223
+ mocks.pathname = "/pricing";
224
+ rerender(<AnalyticsTracker hasConsent={undefined} resolveSection={publicSection} />);
225
+
226
+ expect(mocks.track).not.toHaveBeenCalled();
227
+ expect(document.cookie).toContain("analytics_visitor=keep-me");
228
+
229
+ rerender(<AnalyticsTracker hasConsent={true} resolveSection={publicSection} />);
230
+
231
+ expect(mocks.track).toHaveBeenCalledTimes(1);
232
+ expect(eventAt(0).path).toBe("/pricing");
233
+ });
234
+
235
+ it("keeps the existing cookie id when unknown consent resolves to accepted", () => {
236
+ document.cookie = "analytics_visitor=keep-me; path=/";
237
+ mocks.pathname = "/pricing";
238
+ const { rerender } = render(<AnalyticsTracker hasConsent={undefined} resolveSection={publicSection} />);
239
+ rerender(<AnalyticsTracker hasConsent={true} resolveSection={publicSection} />);
240
+
241
+ expect(mocks.track).toHaveBeenCalledTimes(1);
242
+ expect(eventAt(0)).toEqual(expect.objectContaining({ visitorId: "keep-me" }));
243
+ expect(eventAt(0)).not.toHaveProperty("consentGranted");
244
+ });
245
+
246
+ it("clears the cookie once unknown consent resolves to refused", () => {
247
+ document.cookie = "analytics_visitor=keep-me; path=/";
248
+ mocks.pathname = "/pricing";
249
+ const { rerender } = render(<AnalyticsTracker hasConsent={undefined} resolveSection={publicSection} />);
250
+
251
+ expect(mocks.track).not.toHaveBeenCalled();
252
+ expect(document.cookie).toContain("analytics_visitor=keep-me");
253
+
254
+ rerender(<AnalyticsTracker hasConsent={false} resolveSection={publicSection} />);
255
+
256
+ expect(mocks.track).toHaveBeenCalledTimes(1);
257
+ expect(eventAt(0).visitorId).toBeUndefined();
258
+ expect(document.cookie).not.toContain("analytics_visitor");
259
+ });
260
+
261
+ it("carries attribution on the first known event", () => {
262
+ setReferrer("https://elsewhere.example/");
263
+ mocks.pathname = "/pricing";
264
+ const { rerender } = render(<AnalyticsTracker hasConsent={undefined} resolveSection={publicSection} />);
265
+ rerender(<AnalyticsTracker hasConsent={true} resolveSection={publicSection} />);
266
+
267
+ expect(mocks.track).toHaveBeenCalledTimes(1);
268
+ expect(eventAt(0)).toEqual(
269
+ expect.objectContaining({ referrer: "https://elsewhere.example/", visitorId: expect.stringMatching(UUID) }),
270
+ );
271
+ });
272
+
273
+ it("flags the accept click", () => {
274
+ mocks.pathname = "/pricing";
275
+ const { rerender } = render(<AnalyticsTracker hasConsent={false} resolveSection={publicSection} />);
276
+ rerender(<AnalyticsTracker hasConsent={true} resolveSection={publicSection} />);
277
+
278
+ expect(mocks.track).toHaveBeenCalledTimes(2);
279
+ expect(eventAt(0)).not.toHaveProperty("consentGranted");
280
+ expect(eventAt(1)).toEqual(
281
+ expect.objectContaining({ consentGranted: true, visitorId: expect.stringMatching(UUID) }),
282
+ );
283
+ });
284
+
218
285
  it("skips automated browsers and the analytics admin pages", () => {
219
286
  setWebdriver(true);
220
287
  mocks.pathname = "/pricing";
@@ -212,6 +212,19 @@ describe("analytics models — createJsonApi", () => {
212
212
  expect(Object.keys(doc.data.relationships ?? {})).toHaveLength(0);
213
213
  });
214
214
 
215
+ it("serialises consentGranted only when given", () => {
216
+ const flagged = new AnalyticsEvent().createJsonApi({
217
+ id: "e2",
218
+ path: "/",
219
+ section: "public",
220
+ consentGranted: true,
221
+ });
222
+ const plain = new AnalyticsEvent().createJsonApi({ id: "e3", path: "/", section: "public" });
223
+
224
+ expect(flagged.data.attributes.consentGranted).toBe(true);
225
+ expect(plain.data.attributes).not.toHaveProperty("consentGranted");
226
+ });
227
+
215
228
  it("serialises a summary back to a JSON:API resource object", () => {
216
229
  const doc = new AnalyticsSummary().createJsonApi({
217
230
  id: "all|current",
@@ -57,6 +57,7 @@ export class AnalyticsEvent extends AbstractApiData implements AnalyticsEventInt
57
57
  if (data.utmContent !== undefined) response.data.attributes.utmContent = data.utmContent;
58
58
  if (data.visitorId !== undefined) response.data.attributes.visitorId = data.visitorId;
59
59
  if (data.screenWidth !== undefined) response.data.attributes.screenWidth = data.screenWidth;
60
+ if (data.consentGranted !== undefined) response.data.attributes.consentGranted = data.consentGranted;
60
61
 
61
62
  return response;
62
63
  }
@@ -31,6 +31,8 @@ export type AnalyticsEventInput = {
31
31
  utmContent?: string;
32
32
  visitorId?: string;
33
33
  screenWidth?: number;
34
+ /** True only on the event sent by the Accept click: the API adopts the open cookieless session. */
35
+ consentGranted?: boolean;
34
36
  };
35
37
 
36
38
  // Input types for the read-only models' createJsonApi(). `id` is always