@knime/product-features 4.0.0 → 4.1.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 (48) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/analytics.js +2385 -0
  3. package/dist/analytics.js.map +1 -0
  4. package/dist/authUtils.js +149 -0
  5. package/dist/authUtils.js.map +1 -0
  6. package/dist/embeddingSDK.js +219 -0
  7. package/dist/embeddingSDK.js.map +1 -0
  8. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  9. package/dist/src/analytics/analytics.d.ts +44 -0
  10. package/dist/src/analytics/analytics.d.ts.map +1 -0
  11. package/dist/src/analytics/index.d.ts +3 -0
  12. package/dist/src/analytics/index.d.ts.map +1 -0
  13. package/dist/src/analytics/schema/cloudhome-event-functions.d.ts +82 -0
  14. package/dist/src/analytics/schema/cloudhome-event-functions.d.ts.map +1 -0
  15. package/dist/src/analytics/schema/editor-event-functions.d.ts +151 -0
  16. package/dist/src/analytics/schema/editor-event-functions.d.ts.map +1 -0
  17. package/dist/src/analytics/types.d.ts +37 -0
  18. package/dist/src/analytics/types.d.ts.map +1 -0
  19. package/dist/src/analytics/utils/toSnakeCaseDeep.d.ts +5 -0
  20. package/dist/src/analytics/utils/toSnakeCaseDeep.d.ts.map +1 -0
  21. package/dist/src/authUtils/client.d.ts +13 -0
  22. package/dist/src/authUtils/client.d.ts.map +1 -0
  23. package/dist/src/authUtils/index.d.ts +49 -0
  24. package/dist/src/authUtils/index.d.ts.map +1 -0
  25. package/dist/src/authUtils/logger.d.ts +2 -0
  26. package/dist/src/authUtils/logger.d.ts.map +1 -0
  27. package/dist/src/authUtils/refresher.d.ts +9 -0
  28. package/dist/src/authUtils/refresher.d.ts.map +1 -0
  29. package/dist/src/authUtils/shared.d.ts +8 -0
  30. package/dist/src/authUtils/shared.d.ts.map +1 -0
  31. package/dist/src/authUtils/types.d.ts +17 -0
  32. package/dist/src/authUtils/types.d.ts.map +1 -0
  33. package/dist/src/authUtils/useAuthState.d.ts +17 -0
  34. package/dist/src/authUtils/useAuthState.d.ts.map +1 -0
  35. package/dist/src/embeddingSDK/guest.d.ts +27 -0
  36. package/dist/src/embeddingSDK/guest.d.ts.map +1 -0
  37. package/dist/src/embeddingSDK/host.d.ts +23 -0
  38. package/dist/src/embeddingSDK/host.d.ts.map +1 -0
  39. package/dist/src/embeddingSDK/index.d.ts +8 -0
  40. package/dist/src/embeddingSDK/index.d.ts.map +1 -0
  41. package/dist/src/embeddingSDK/messages.d.ts +36 -0
  42. package/dist/src/embeddingSDK/messages.d.ts.map +1 -0
  43. package/dist/src/embeddingSDK/types.d.ts +117 -0
  44. package/dist/src/embeddingSDK/types.d.ts.map +1 -0
  45. package/dist/src/embeddingSDK/util.d.ts +11 -0
  46. package/dist/src/embeddingSDK/util.d.ts.map +1 -0
  47. package/dist/toasts.js +1 -1
  48. package/package.json +20 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","names":[],"sources":["../src/analytics/utils/toSnakeCaseDeep.ts","../src/analytics/schema/cloudhome-event-functions.ts","../src/analytics/schema/editor-event-functions.ts","../src/analytics/analytics.ts"],"sourcesContent":["import { snakeCase } from \"es-toolkit\";\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n return (\n typeof value === \"object\" &&\n value !== null &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n};\n\n/**\n * Deeply converts all properties in the given object from camelCase to snake_case.\n */\nexport const toSnakeCaseDeep = (object: Partial<Record<string, unknown>>) =>\n Object.entries(object).reduce(\n (acc, [rawKey, rawValue]) => {\n const key = rawKey.toString();\n\n if (isPlainObject(rawValue)) {\n acc[snakeCase(key)] = toSnakeCaseDeep(rawValue);\n } else if (Array.isArray(rawValue)) {\n acc[snakeCase(key)] = rawValue.map((v) =>\n isPlainObject(v) ? toSnakeCaseDeep(v) : v,\n );\n } else {\n acc[snakeCase(key)] = rawValue;\n }\n\n return acc;\n },\n {} as Record<string, unknown>,\n );\n","/* eslint-disable */\n// AUTO-GENERATED FILE. DO NOT EDIT.\nimport type { AnalyticsEvent, DefaultContext, EventFunctionArgs, GeneratedStaticFields, SchemaStaticFields } from \"../types\";\nimport { toSnakeCaseDeep } from \"../utils/toSnakeCaseDeep\";\n\n/**\n * Fired when the user clicks Run from the deployments page\n */\nexport const adHocExecutionStartedDeploymentsPage = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"execution_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Execution Created\",\n interaction: {\n location: \"main_area\",\n page: \"deployments\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks Run in the ad hoc execution panel\n */\nexport const adHocExecutionStartedExecutionPanel = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"execution_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Execution Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks Run from the workflow page deployments table\n */\nexport const adHocExecutionStartedWorkflowPageDeploymentsTable = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"execution_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Execution Created\",\n interaction: {\n location: \"main_area\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks the Create button in the version creation side panel on the component details page\n */\nexport const versionCreatedFromComponentDetails = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"version_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Version Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"component_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks the Create button in the version creation side panel on the workflow details page\n */\nexport const versionCreatedFromWorkflowDetails = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"version_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Version Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user creates a new secret by clicking Create in the side panel on the team secrets page\n */\nexport const secretCreatedTeamSecrets = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"secret_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Secret Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"team_secrets\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user creates a new secret by clicking Create in the side panel on the personal secrets page\n */\nexport const secretCreatedPersonalSecrets = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"secret_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Secret Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"personal_secrets\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks the Create button in the deployment creation side panel on the workflow details page\n */\nexport const deploymentCreatedFromWorkflowDetails = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"deploymentCreatedFromWorkflowDetails\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"deployment_created\",\n event_source: \"cloudhome\",\n event_display_name: \"Deployment Created\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user shares a deployment via the access management side panel on the deployments page\n */\nexport const deploymentSharedDeploymentsAccessPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"deploymentSharedDeploymentsAccessPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"deployment_shared\",\n event_source: \"cloudhome\",\n event_display_name: \"Deployment Shared\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"deployments\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user shares a deployment via the sharing popup on the deployments page\n */\nexport const deploymentSharedDeploymentsSharingPopup = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"deploymentSharedDeploymentsSharingPopup\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"deployment_shared\",\n event_source: \"cloudhome\",\n event_display_name: \"Deployment Shared\",\n interaction: {\n location: \"popup\",\n page: \"deployments\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user shares a deployment via the access management side panel on the workflow page\n */\nexport const deploymentSharedWorkflowAccessPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"deploymentSharedWorkflowAccessPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"deployment_shared\",\n event_source: \"cloudhome\",\n event_display_name: \"Deployment Shared\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user shares a deployment via the sharing popup on the workflow page\n */\nexport const deploymentSharedWorkflowSharingPopup = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"deploymentSharedWorkflowSharingPopup\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"deployment_shared\",\n event_source: \"cloudhome\",\n event_display_name: \"Deployment Shared\",\n interaction: {\n location: \"popup\",\n page: \"workflow_details\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user uploads items via the upload button in the main area on the space page\n */\nexport const objectUploadedFromSpacePage = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"objectUploadedFromSpacePage\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"object_uploaded\",\n event_source: \"cloudhome\",\n event_display_name: \"Object Uploaded\",\n interaction: {\n location: \"navigation_bar\",\n page: \"space\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the spaces page, via: Manage team members toolbar button -> Manage members side panel -> Add members popup\n */\nexport const teamMemberInvitedFromManageTeamMembersPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromManageTeamMembersPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"popup\",\n page: \"spaces\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the spaces page, via: space card -> Share space context menu item -> Share space popup\n */\nexport const teamMemberInvitedFromSpaceCardShareSpacePopup = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSpaceCardShareSpacePopup\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"popup\",\n page: \"spaces\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the spaces page, via: space card -> Manage access context menu item -> Manage space access side panel -> Share space popup\n */\nexport const teamMemberInvitedFromSpaceCardManageAccessPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSpaceCardManageAccessPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"spaces\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the space page, via: Share space toolbar button -> Share space popup\n */\nexport const teamMemberInvitedFromSpacePageShareSpacePopup = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSpacePageShareSpacePopup\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"popup\",\n page: \"space\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the space page, via: Manage access toolbar button -> Manage space access side panel -> Share space popup\n */\nexport const teamMemberInvitedFromSpacePageManageAccessPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSpacePageManageAccessPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"space\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the secrets page, via: secrets table -> Share context menu item -> Share secret popup\n */\nexport const teamMemberInvitedFromSecretsPageShareSecretPopup = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSecretsPageShareSecretPopup\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"popup\",\n page: \"team_secrets\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user invites a team member on the space page, via: secrets table -> Manage access context menu item -> Manage secret access side panel -> Share secret popup\n */\nexport const teamMemberInvitedFromSecretsPageManageAccessPanel = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"teamMemberInvitedFromSecretsPageManageAccessPanel\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"team_member_invited\",\n event_source: \"cloudhome\",\n event_display_name: \"Team Member Invited\",\n interaction: {\n location: \"contextual_side_panel\",\n page: \"team_secrets\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n","/* eslint-disable */\n// AUTO-GENERATED FILE. DO NOT EDIT.\nimport type { AnalyticsEvent, DefaultContext, EventFunctionArgs, GeneratedStaticFields, SchemaStaticFields } from \"../types\";\nimport { toSnakeCaseDeep } from \"../utils/toSnakeCaseDeep\";\n\n/**\n * This is KAI Prompted QA\n */\nexport const kaiPromptedQA = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"kai_prompted\",\n event_source: \"editor\",\n event_display_name: \"K-AI Prompted\",\n interaction: {\n location: \"kai_qa\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const kaiPromptedBuild = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"kai_prompted\",\n event_source: \"editor\",\n event_display_name: \"K-AI Prompted\",\n interaction: {\n location: \"kai_build\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const kaiPromptedQuickBuild = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"kaiPromptedQuickBuild\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"kai_prompted\",\n event_source: \"editor\",\n event_display_name: \"K-AI Prompted\",\n interaction: {\n location: \"qam\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * This is the sessions started\n */\nexport const sessionStarted = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"session_started\",\n event_source: \"editor\",\n event_display_name: \"Editor session start\",\n interaction: {\n location: \"global\",\n trigger: \"system\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const layoutEditorOpenedCtxMenu = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"layouteditor_opened\",\n event_source: \"editor\",\n event_display_name: \"Layout Editor Opened\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const layoutEditorOpenedKeyboard = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"layouteditor_opened\",\n event_source: \"editor\",\n event_display_name: \"Layout Editor Opened\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const layoutEditorOpenedToolbar = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"layouteditor_opened\",\n event_source: \"editor\",\n event_display_name: \"Layout Editor Opened\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const annotationCreatedCtxMenu = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"annotation_created\",\n event_source: \"editor\",\n event_display_name: \"Annotation Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const annotationCreatedKaiExplain = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"annotation_created_kai_explain\",\n event_source: \"editor\",\n event_display_name: \"Annotation Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const workflowSavedToolbar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"workflowSavedToolbar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"workflow_saved\",\n event_source: \"editor\",\n event_display_name: \"Workflow Saved\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const workflowSavedKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"workflowSavedKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"workflow_saved\",\n event_source: \"editor\",\n event_display_name: \"Workflow Saved\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const connectionCreatedPortDragDrop = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"connectionCreatedPortDragDrop\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"connection_created\",\n event_source: \"editor\",\n event_display_name: \"Connection Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const connectionCreatedKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"connectionCreatedKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"connection_created_autoconnect\",\n event_source: \"editor\",\n event_display_name: \"Connection created autoconnect\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const connectionCreatedCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"connectionCreatedCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"connection_created_autoconnect\",\n event_source: \"editor\",\n event_display_name: \"Connection created autoconnect\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedNodeRepoDragDrop = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedNodeRepoDragDrop\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"node_repository\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedNodeRepoDoubleClick = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedNodeRepoDoubleClick\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"node_repository\",\n trigger: \"user\",\n type: \"double_click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedNodeRepoKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedNodeRepoKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"node_repository\",\n trigger: \"user\",\n type: \"key_press\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedExplorerDragDrop = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedExplorerDragDrop\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"space_explorer\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedQamClick = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedQamClick\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"qam\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedQamKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedQamKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"qam\",\n trigger: \"user\",\n type: \"key_press\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedKaiQaDragDrop = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedKaiQaDragDrop\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"kai\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedKaiQaKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedKaiQaKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"kai\",\n trigger: \"user\",\n type: \"key_press\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const qamOpenedPortDragDrop = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"qamOpenedPortDragDrop\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"qam_opened\",\n event_source: \"editor\",\n event_display_name: \"QAM Opened\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const qamOpenedCanvasDoubleClick = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"qam_opened\",\n event_source: \"editor\",\n event_display_name: \"QAM Opened\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"double_click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const qamOpenedKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"qamOpenedKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"qam_opened\",\n event_source: \"editor\",\n event_display_name: \"QAM Opened\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const qamOpenedCtxMenu = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"qam_opened\",\n event_source: \"editor\",\n event_display_name: \"QAM Opened\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const nodeSearchedNodeRepo = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeSearchedNodeRepo\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_searched\",\n event_source: \"editor\",\n event_display_name: \"Node Searched\",\n interaction: {\n location: \"node_repository\",\n trigger: \"user\",\n type: \"key_press\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeSearchedQam = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeSearchedQam\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_searched\",\n event_source: \"editor\",\n event_display_name: \"Node Searched\",\n interaction: {\n location: \"qam\",\n trigger: \"user\",\n type: \"key_press\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const workflowInfoOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"workflow_info_opened\",\n event_source: \"editor\",\n event_display_name: \"Workflow Info Opened\",\n interaction: {\n location: \"workflow_info\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const nodeRepositoryOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"noderepository_opened\",\n event_source: \"editor\",\n event_display_name: \"Node Repository Opened\",\n interaction: {\n location: \"node_repository\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const spaceExplorerOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"space_explorer_opened\",\n event_source: \"editor\",\n event_display_name: \"Space Explorer Opened\",\n interaction: {\n location: \"space_explorer\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const kaiOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"kai_opened\",\n event_source: \"editor\",\n event_display_name: \"K-AI Opened\",\n interaction: {\n location: \"kai\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const workflowMonitorOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"workflow_monitor_opened\",\n event_source: \"editor\",\n event_display_name: \"Workflow Monitor opened\",\n interaction: {\n location: \"workflow_monitor\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const versionHistoryOpened = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"version_history_opened\",\n event_source: \"editor\",\n event_display_name: \"Version History opened\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"dropdown_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const actionUndoneToolbar = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"action_undone\",\n event_source: \"editor\",\n event_display_name: \"Action Undone\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const actionUndoneKeyboard = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"action_undone\",\n event_source: \"editor\",\n event_display_name: \"Action Undone\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const actionRedoneToolbar = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"action_redone\",\n event_source: \"editor\",\n event_display_name: \"Action Redone\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const actionRedoneKeyboard = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"action_redone\",\n event_source: \"editor\",\n event_display_name: \"Action Redone\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const versionCreated = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"version_created\",\n event_source: \"editor\",\n event_display_name: \"Version Created\",\n interaction: {\n location: \"version_history\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const sessionEnded = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"sessionEnded\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"session_ended\",\n event_source: \"editor\",\n event_display_name: \"Editor Session End\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const sessionInterrupted = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"session_interrupted\",\n event_source: \"editor\",\n event_display_name: \"Editor Session Interrupted\",\n interaction: {\n location: \"global\",\n trigger: \"system\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const sessionResumed = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"session_resumed\",\n event_source: \"editor\",\n event_display_name: \"Editor Session Resumed\",\n interaction: {\n location: \"global\",\n trigger: \"system\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData } };\n\n return event;\n};\n\nexport const containerNodeCreatedCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeCreatedCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_created\",\n event_source: \"editor\",\n event_display_name: \"Container Node Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeCreatedKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeCreatedKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_created\",\n event_source: \"editor\",\n event_display_name: \"Container Node Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const hintShown = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"hintShown\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"hint_shown\",\n event_source: \"editor\",\n event_display_name: \"Hint Shown\",\n interaction: {\n location: \"global\",\n trigger: \"system\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the empty state indicating a port has no view becomes visible - helps prioritize which missing port views should be migrated next by comparing how often they are being viewed\n */\nexport const outdatedPortViewShown = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"outdatedPortViewShown\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"outdated_port_view_shown\",\n event_source: \"editor\",\n event_display_name: \"Outdated Port View Shown\",\n interaction: {\n location: \"node_monitor\",\n trigger: \"system\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const hintClosed = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"hintClosed\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"hint_closed\",\n event_source: \"editor\",\n event_display_name: \"Hint Closed\",\n interaction: {\n location: \"hint\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks Apply and Execute in the node configuration panel\n */\nexport const applyAndExecuteNodeConfig = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"applyAndExecuteNodeConfig\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"node_configuration\",\n specification: \"apply_and_execute\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user triggers Apply and Execute in the node configuration panel via keyboard shortcut\n */\nexport const applyAndExecuteNodeConfigKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"applyAndExecuteNodeConfigKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"node_configuration\",\n specification: \"apply_and_execute\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user clicks Execute in the node configuration panel\n */\nexport const executeNodeConfig = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeNodeConfig\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"node_configuration\",\n specification: \"execute\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const configurationCompletedApply = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"configurationCompletedApply\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"configuration_completed\",\n event_source: \"editor\",\n event_display_name: \"Configuration Completed\",\n interaction: {\n location: \"node_configuration\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const configurationCompletedAutoApply = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"configurationCompletedAutoApply\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"configuration_completed\",\n event_source: \"editor\",\n event_display_name: \"Configuration Completed\",\n interaction: {\n location: \"node_configuration\",\n trigger: \"user\",\n type: \"auto\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeEnteredCanvasDoubleClick = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeEnteredCanvasDoubleClick\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_entered\",\n event_source: \"editor\",\n event_display_name: \"Container Node Entered\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"double_click\",\n ui_element: \"node\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeEnteredKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeEnteredKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_entered\",\n event_source: \"editor\",\n event_display_name: \"Container Node Entered\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeEnteredCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeEnteredCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_entered\",\n event_source: \"editor\",\n event_display_name: \"Container Node Entered\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeExitedKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeExitedKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_exited\",\n event_source: \"editor\",\n event_display_name: \"Container Node Exited\",\n interaction: {\n location: \"global\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const containerNodeExitedToolbar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"containerNodeExitedToolbar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"containernode_exited\",\n event_source: \"editor\",\n event_display_name: \"Container Node Exited\",\n interaction: {\n location: \"workflow_toolbar\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedCanvasDragDropFile = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedCanvasDragDropFile\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\nexport const nodeCreatedFloatingToolsAddByFile = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeCreatedFloatingToolsAddByFile\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_created\",\n event_source: \"editor\",\n event_display_name: \"Node Created\",\n interaction: {\n location: \"floating_canvas_tools\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user submits feedback for a node\n */\nexport const nodeConfigFeedbackSubmitted = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeConfigFeedbackSubmitted\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_feedback_submitted\",\n event_source: \"editor\",\n event_display_name: \"Node Feedback Submitted\",\n interaction: {\n location: \"node_configuration\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user requests the migration of a node's auto-generated dialog to a modern dialog\n */\nexport const nodeMigrationRequested = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"nodeMigrationRequested\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_migration_requested\",\n event_source: \"editor\",\n event_display_name: \"Node Migration Requested\",\n interaction: {\n location: \"node_configuration\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes all nodes via the context menu\n */\nexport const executeAllNodesCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeAllNodesCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"execute_all\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes all nodes via the keyboard shortcut\n */\nexport const executeAllNodesKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeAllNodesKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"global\",\n specification: \"execute_all\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes all nodes via the workflow toolbar\n */\nexport const executeAllNodesToolbar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeAllNodesToolbar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"workflow_toolbar\",\n specification: \"execute_all\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes a selection of nodes via the context menu\n */\nexport const executeSelectedNodesCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeSelectedNodesCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"execute\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes a selection of nodes via the keyboard shortcut\n */\nexport const executeSelectedNodesKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeSelectedNodesKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"global\",\n specification: \"execute\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes a selection of nodes via the workflow toolbar\n */\nexport const executeSelectedNodesToolbar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeSelectedNodesToolbar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"workflow_toolbar\",\n specification: \"execute\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes a single node via the node action bar\n */\nexport const executeNodeActionBar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeNodeActionBar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"execute\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"node_action_bar\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user executes a single node via the workflow monitor\n */\nexport const executeNodeFromMonitor = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"executeNodeFromMonitor\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"node_monitor\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user resumes loop execution via the keyboard shortcut\n */\nexport const resumeLoopExecutionKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"resumeLoopExecutionKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"global\",\n specification: \"resume_loop\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user resumes loop execution via the node action bar\n */\nexport const resumeLoopExecutionActionBar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"resumeLoopExecutionActionBar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"resume_loop\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"node_action_bar\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user steps through loop execution via the keyboard shortcut\n */\nexport const stepLoopExecutionKeyboard = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"stepLoopExecutionKeyboard\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"global\",\n specification: \"step_loop\",\n trigger: \"user\",\n type: \"shortcut\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user steps through loop execution via the node action bar\n */\nexport const stepLoopExecutionActionBar = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"stepLoopExecutionActionBar\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"step_loop\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"node_action_bar\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user resumes loop execution via the context menu\n */\nexport const resumeLoopExecutionCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"resumeLoopExecutionCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"resume_loop\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user steps through loop execution via the context menu\n */\nexport const stepLoopExecutionCtxMenu = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"stepLoopExecutionCtxMenu\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"node_executed\",\n event_source: \"editor\",\n event_display_name: \"Node executed\",\n interaction: {\n location: \"canvas\",\n specification: \"step_loop\",\n trigger: \"user\",\n type: \"click\",\n ui_element: \"context_menu\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user uploads items via the upload button in the space explorer\n */\nexport const objectUploaded = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"objectUploaded\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"object_uploaded\",\n event_source: \"editor\",\n event_display_name: \"Object Uploaded\",\n interaction: {\n location: \"space_explorer\",\n trigger: \"user\",\n type: \"click\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n/**\n * Fired when the user uploads items by dropping a file on the canvas\n */\nexport const objectUploadedCanvasDragDropFile = <T extends DefaultContext>(ctx: T) => (eventData: EventFunctionArgs<\"objectUploadedCanvasDragDropFile\">): AnalyticsEvent => {\n const staticData = {\n ...toSnakeCaseDeep(ctx),\n unique_event_id: crypto.randomUUID(),\n timestamp: new Date().toISOString(),\n event_name: \"object_uploaded\",\n event_source: \"editor\",\n event_display_name: \"Object Uploaded\",\n interaction: {\n location: \"canvas\",\n trigger: \"user\",\n type: \"drag_drop\",\n },\n } satisfies SchemaStaticFields & GeneratedStaticFields;\n\n const event = { id: staticData.event_name, data: { ...staticData, payload: { ...toSnakeCaseDeep(eventData as Record<string, any>) } } };\n\n return event;\n};\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as cloudHomeFunctions from \"./schema/cloudhome-event-functions\";\nimport * as editorFunctions from \"./schema/editor-event-functions\";\nimport type {\n AnalyticsEvent,\n AnalyticsEventSender,\n DefaultContext,\n Metadata,\n} from \"./types\";\n\nconst METADATA: Metadata = Object.freeze({\n version: \"v2.0\",\n});\n\n/**\n * Unwraps the inner function imported from the generated functions.\n * With this supply the context here and just expose the inner function\n * but also ensure we keep the same names and type constraints\n */\ntype UnwrapFunction<T> = T extends (ctx: DefaultContext) => infer R\n ? R extends (...args: infer P) => infer Q\n ? (...args: P) => Q\n : never\n : never;\n\ntype EditorFunctionMap = typeof editorFunctions;\ntype CloudHomeFunctionMap = typeof cloudHomeFunctions;\n\ntype EditorBuilderFunctions = {\n [K in keyof EditorFunctionMap]: UnwrapFunction<EditorFunctionMap[K]>;\n};\ntype CloudHomeBuilderFunctions = {\n [K in keyof CloudHomeFunctionMap]: UnwrapFunction<CloudHomeFunctionMap[K]>;\n};\n\ntype EditorSenderFunctions = {\n [K in keyof EditorBuilderFunctions]: (\n ...args: Parameters<EditorBuilderFunctions[K]>\n ) => void;\n};\ntype CloudHomeSenderFunctions = {\n [K in keyof CloudHomeBuilderFunctions]: (\n ...args: Parameters<CloudHomeBuilderFunctions[K]>\n ) => void;\n};\n\ntype BuilderFunctions<T extends DefaultContext> =\n T[\"eventSource\"] extends \"editor\"\n ? EditorBuilderFunctions\n : CloudHomeBuilderFunctions;\n\ntype SenderFunctions<T extends DefaultContext> =\n T[\"eventSource\"] extends \"editor\"\n ? EditorSenderFunctions\n : CloudHomeSenderFunctions;\n\n/**\n * This function creates an event builder, which lets you construct correct and strongly-typed\n * event payloads according to the current schema used by this package\n * @param context\n * @returns\n */\nfunction eventBuilder<T extends DefaultContext>(\n context: T,\n): BuilderFunctions<T> {\n const unwrapped = Object.fromEntries(\n Object.entries(\n context.eventSource === \"editor\" ? editorFunctions : cloudHomeFunctions,\n ).map(([name, fn]) => [name, fn(context)]),\n ) as BuilderFunctions<T>;\n\n return { ...unwrapped };\n}\n\nexport const analyticsEvents = Object.freeze({\n METADATA,\n /**\n * Initialize the analytic event tracker\n */\n init: <T extends DefaultContext>(params: {\n /**\n * Context for the initialized tracker. This will remain unchanged throughout the lifecycle\n * of this tracker\n */\n context: T;\n /**\n * Sender interface; will be used to determine how to handle each event when its\n * corresponding track function is invoked\n */\n sender: AnalyticsEventSender;\n }) => {\n const builder = eventBuilder(params.context);\n\n type AnyFn = (...args: any[]) => any;\n\n const wrapper = {} as SenderFunctions<T>;\n\n // keep all the same functions of the builder but wrap around them for extra behavior\n Object.keys(builder).forEach((fnName) => {\n const key = fnName as keyof SenderFunctions<T>;\n (wrapper as any)[key] = (...args: any[]) => {\n // TS issue:\n // ```A spread argument must either have a tuple type or be passed to a rest parameter.```\n // This happens because when calling the methods generically, TS tries to join all function signatures\n // into a union of tuples that contains all possible argument combinations for all of the functions.\n // This leads to an unresolvable type error\n // More details on the issue, see: https://github.com/microsoft/TypeScript/issues/49700\n const event: AnalyticsEvent = (builder[key] as AnyFn)(...args);\n\n params.sender.send({ event, metadata: METADATA });\n };\n });\n\n return wrapper;\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
+ import { computed, readonly, shallowRef } from "vue";
3
+ //#region src/authUtils/logger.ts
4
+ var logger = () => consola.withTag("Auth Utils");
5
+ //#endregion
6
+ //#region src/authUtils/shared.ts
7
+ /**
8
+ * Adds a "where do you want to go" `wdywtg` query param to the url. This
9
+ * will take the user to the URL contained within that param after the auth flow completes
10
+ */
11
+ var addWdywtg = (url, wdywtg) => {
12
+ if (wdywtg) {
13
+ const decodedWdywtg = decodeURIComponent(wdywtg);
14
+ if (decodedWdywtg !== wdywtg) wdywtg = decodedWdywtg;
15
+ url += `?wdywtg=${encodeURIComponent(wdywtg)}`;
16
+ }
17
+ return url;
18
+ };
19
+ var AUTH_SERVICE_PATH = "/_/auth";
20
+ var buildLoginPath = ({ wdywtg } = {}) => addWdywtg(`${AUTH_SERVICE_PATH}/login`, wdywtg);
21
+ var buildLogoutPath = ({ wdywtg } = {}) => addWdywtg(`${AUTH_SERVICE_PATH}/logout`, wdywtg);
22
+ //#endregion
23
+ //#region src/authUtils/client.ts
24
+ var client_exports = /* @__PURE__ */ __exportAll({
25
+ navigateToLogin: () => navigateToLogin,
26
+ navigateToLogout: () => navigateToLogout
27
+ });
28
+ /**
29
+ * Navigates to the login path. This function does not work on SSR
30
+ */
31
+ var navigateToLogin = ({ wdywtg } = {}) => {
32
+ logger().debug("Navigating to login");
33
+ window.location.href = buildLoginPath({ wdywtg });
34
+ };
35
+ /**
36
+ * Navigates to the logout path. This function does not work on SSR
37
+ */
38
+ var navigateToLogout = ({ wdywtg } = {}) => {
39
+ logger().debug("Navigating to logout");
40
+ window.location.href = buildLogoutPath({ wdywtg });
41
+ };
42
+ //#endregion
43
+ //#region src/authUtils/refresher.ts
44
+ var REFRESH_BUFFER = 10;
45
+ /**
46
+ * Subtracts a random noise value from the ttl to refresh the token before it actually expires.
47
+ *
48
+ * @param {number} ttlSeconds - time-to-live (TTL) in seconds
49
+ */
50
+ var subtractRandomNoise = (ttlSeconds) => {
51
+ const randomBuffer = Math.random() * (REFRESH_BUFFER / 2);
52
+ return Math.floor((ttlSeconds - REFRESH_BUFFER - randomBuffer) * 1e3);
53
+ };
54
+ var timeout;
55
+ /**
56
+ * Start proactively refreshing the token before it expires.
57
+ */
58
+ var startRefresher = (options = {}) => {
59
+ logger().debug("Starting token refresher");
60
+ globalThis.clearTimeout(timeout);
61
+ const fetchData = async () => {
62
+ try {
63
+ const response = await fetch(`${AUTH_SERVICE_PATH}/refresh`);
64
+ if (!response.ok) throw new Error(`Error during auth refresh: ${response.status}`);
65
+ options?.onRefreshComplete?.();
66
+ const { expiry } = await response.json();
67
+ const msUntilRefresh = subtractRandomNoise(expiry);
68
+ logger().debug(`Token is valid. Expires in ${expiry}s, refreshing in ${msUntilRefresh / 1e3}s`);
69
+ timeout = globalThis.setTimeout(() => {
70
+ fetchData();
71
+ }, msUntilRefresh);
72
+ } catch (error) {
73
+ logger().warn(`Token refresh failed: ${error}, logging out`);
74
+ navigateToLogout({ wdywtg: "/?authError=refresh" });
75
+ }
76
+ };
77
+ fetchData();
78
+ };
79
+ var stopRefresher = () => {
80
+ if (timeout !== void 0) {
81
+ logger().info("Stopping auth refresh timer");
82
+ globalThis.clearTimeout(timeout);
83
+ }
84
+ };
85
+ //#endregion
86
+ //#region src/authUtils/useAuthState.ts
87
+ var loggedInUser = shallowRef(null);
88
+ var setLoggedInUser = (user) => {
89
+ loggedInUser.value = user;
90
+ };
91
+ var useAuthState = () => {
92
+ const isLoggedIn = computed(() => Boolean(loggedInUser.value));
93
+ return {
94
+ loggedInUser: readonly(loggedInUser),
95
+ isLoggedIn
96
+ };
97
+ };
98
+ //#endregion
99
+ //#region src/authUtils/index.ts
100
+ /**
101
+ * This function does two main things:
102
+ * 1. Fetch the user identity and store it via the auth composable.
103
+ * 2. Start the background refresher which will renew tokens according to the
104
+ * auth service TTL.
105
+ *
106
+ * Typical usage is from a route middleware for routes that require
107
+ * authentication. See README for a more in-depth example usage
108
+ *
109
+ * @param options AuthRefresher
110
+ * @returns a function that, when called, will load the identity (if needed)
111
+ * and start the token refresher. The returned function will throw if the
112
+ * underlying identity fetch fails.
113
+ */
114
+ function createAuthRefresher(options) {
115
+ return async () => {
116
+ const { isLoggedIn } = useAuthState();
117
+ if (!isLoggedIn.value) try {
118
+ const identity = await options.getIdentity();
119
+ if (identity) {
120
+ logger().info("Fetched user identity", {
121
+ id: identity.id,
122
+ name: identity.name
123
+ });
124
+ setLoggedInUser(identity);
125
+ startRefresher({ onRefreshComplete: options.onRefreshComplete });
126
+ } else logger().error("Logged in, but could not retrieve logged in user");
127
+ } catch (e) {
128
+ logger().error("Not logged in, http request interceptor should redirect to login", e);
129
+ throw e;
130
+ }
131
+ };
132
+ }
133
+ var authUtils = {
134
+ createAuthRefresher,
135
+ stopTokenRefresh: stopRefresher,
136
+ useAuthState,
137
+ /**
138
+ * These utilities don't work in SSR. You can leverage the `paths` helpers to redirect manually
139
+ */
140
+ client: client_exports,
141
+ paths: {
142
+ login: buildLoginPath,
143
+ logout: buildLogoutPath
144
+ }
145
+ };
146
+ //#endregion
147
+ export { authUtils };
148
+
149
+ //# sourceMappingURL=authUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authUtils.js","names":[],"sources":["../src/authUtils/logger.ts","../src/authUtils/shared.ts","../src/authUtils/client.ts","../src/authUtils/refresher.ts","../src/authUtils/useAuthState.ts","../src/authUtils/index.ts"],"sourcesContent":["export const logger = () => consola.withTag(\"Auth Utils\");\n","/**\n * Adds a \"where do you want to go\" `wdywtg` query param to the url. This\n * will take the user to the URL contained within that param after the auth flow completes\n */\nconst addWdywtg = (url: string, wdywtg?: string) => {\n if (wdywtg) {\n const decodedWdywtg = decodeURIComponent(wdywtg);\n\n // we decode an already-encoded wdywtg so that we can properly encode spaces\n if (decodedWdywtg !== wdywtg) {\n wdywtg = decodedWdywtg;\n }\n\n url += `?wdywtg=${encodeURIComponent(wdywtg)}`;\n }\n return url;\n};\n\nexport const AUTH_SERVICE_PATH = \"/_/auth\";\n\nexport const buildLoginPath = ({ wdywtg }: { wdywtg?: string } = {}) =>\n addWdywtg(`${AUTH_SERVICE_PATH}/login`, wdywtg);\n\nexport const buildLogoutPath = ({ wdywtg }: { wdywtg?: string } = {}) =>\n addWdywtg(`${AUTH_SERVICE_PATH}/logout`, wdywtg);\n","import { logger } from \"./logger\";\nimport { buildLoginPath, buildLogoutPath } from \"./shared\";\n\n/**\n * Navigates to the login path. This function does not work on SSR\n */\nexport const navigateToLogin = ({ wdywtg }: { wdywtg?: string } = {}) => {\n logger().debug(\"Navigating to login\");\n window.location.href = buildLoginPath({ wdywtg }); // NOSONAR - intended window usage\n};\n\n/**\n * Navigates to the logout path. This function does not work on SSR\n */\nexport const navigateToLogout = ({ wdywtg }: { wdywtg?: string } = {}) => {\n logger().debug(\"Navigating to logout\");\n window.location.href = buildLogoutPath({ wdywtg }); // NOSONAR - intended window usage\n};\n","import { navigateToLogout } from \"./client\";\nimport { logger } from \"./logger\";\nimport { AUTH_SERVICE_PATH } from \"./shared\";\nimport type { AuthRefresher } from \"./types\";\n\ntype Options = Pick<AuthRefresher, \"onRefreshComplete\">;\n\nconst REFRESH_BUFFER = 10;\n/**\n * Subtracts a random noise value from the ttl to refresh the token before it actually expires.\n *\n * @param {number} ttlSeconds - time-to-live (TTL) in seconds\n */\nconst subtractRandomNoise = (ttlSeconds: number) => {\n const randomBuffer = Math.random() * (REFRESH_BUFFER / 2); // NOSONAR using random numbers is safe here\n return Math.floor((ttlSeconds - REFRESH_BUFFER - randomBuffer) * 1000);\n};\n\nlet timeout: number | NodeJS.Timeout;\n\n/**\n * Start proactively refreshing the token before it expires.\n */\nexport const startRefresher = (options: Options = {}) => {\n logger().debug(\"Starting token refresher\");\n\n globalThis.clearTimeout(timeout);\n\n const fetchData = async () => {\n try {\n const response = await fetch(`${AUTH_SERVICE_PATH}/refresh`);\n\n if (!response.ok) {\n throw new Error(`Error during auth refresh: ${response.status}`);\n }\n\n options?.onRefreshComplete?.();\n const { expiry } = await response.json();\n\n const msUntilRefresh = subtractRandomNoise(expiry);\n\n logger().debug(\n `Token is valid. Expires in ${expiry}s, refreshing in ${msUntilRefresh / 1000}s`,\n );\n\n timeout = globalThis.setTimeout(() => {\n // eslint-disable-next-line no-void\n void fetchData();\n }, msUntilRefresh);\n } catch (error) {\n logger().warn(`Token refresh failed: ${error}, logging out`);\n navigateToLogout({ wdywtg: \"/?authError=refresh\" });\n }\n };\n\n // eslint-disable-next-line no-void\n void fetchData();\n};\n\nexport const stopRefresher = () => {\n if (timeout !== undefined) {\n logger().info(\"Stopping auth refresh timer\");\n globalThis.clearTimeout(timeout);\n }\n};\n","import { computed, readonly, shallowRef } from \"vue\";\n\nimport type { UserIdentity } from \"./types\";\n\n// Value is cached in the module scope\nconst loggedInUser = shallowRef<UserIdentity | null>(null);\n\nexport const setLoggedInUser = (user: UserIdentity) => {\n loggedInUser.value = user;\n};\n\nexport const useAuthState = () => {\n const isLoggedIn = computed(() => Boolean(loggedInUser.value));\n\n return {\n loggedInUser: readonly(loggedInUser),\n isLoggedIn,\n };\n};\n","import * as client from \"./client\";\nimport { logger } from \"./logger\";\nimport { startRefresher, stopRefresher } from \"./refresher\";\nimport { buildLoginPath, buildLogoutPath } from \"./shared\";\nimport type { AuthRefresher } from \"./types\";\nimport { setLoggedInUser, useAuthState } from \"./useAuthState\";\n\n/**\n * This function does two main things:\n * 1. Fetch the user identity and store it via the auth composable.\n * 2. Start the background refresher which will renew tokens according to the\n * auth service TTL.\n *\n * Typical usage is from a route middleware for routes that require\n * authentication. See README for a more in-depth example usage\n *\n * @param options AuthRefresher\n * @returns a function that, when called, will load the identity (if needed)\n * and start the token refresher. The returned function will throw if the\n * underlying identity fetch fails.\n */\nfunction createAuthRefresher(options: AuthRefresher) {\n return async () => {\n const { isLoggedIn } = useAuthState();\n\n if (!isLoggedIn.value) {\n try {\n const identity = await options.getIdentity();\n\n if (identity) {\n logger().info(\"Fetched user identity\", {\n id: identity.id,\n name: identity.name,\n });\n\n setLoggedInUser(identity);\n startRefresher({ onRefreshComplete: options.onRefreshComplete });\n } else {\n logger().error(\"Logged in, but could not retrieve logged in user\");\n }\n } catch (e) {\n logger().error(\n \"Not logged in, http request interceptor should redirect to login\",\n e,\n );\n throw e;\n }\n }\n };\n}\n\nexport const authUtils = {\n createAuthRefresher,\n stopTokenRefresh: stopRefresher,\n useAuthState,\n /**\n * These utilities don't work in SSR. You can leverage the `paths` helpers to redirect manually\n */\n client,\n paths: { login: buildLoginPath, logout: buildLogoutPath },\n};\n"],"mappings":"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"}