@slicemachine/manager 0.26.7-alpha.aa-prismicnextrichtext.2 → 0.26.7-alpha.jp-import-slice-base.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/API_ENDPOINTS.cjs +8 -4
- package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
- package/dist/constants/API_ENDPOINTS.d.ts +1 -0
- package/dist/constants/API_ENDPOINTS.js +8 -4
- package/dist/constants/API_ENDPOINTS.js.map +1 -1
- package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs +55 -0
- package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs.map +1 -1
- package/dist/managers/prismicRepository/PrismicRepositoryManager.d.ts +90 -0
- package/dist/managers/prismicRepository/PrismicRepositoryManager.js +55 -0
- package/dist/managers/prismicRepository/PrismicRepositoryManager.js.map +1 -1
- package/dist/managers/slices/SlicesManager.cjs +48 -0
- package/dist/managers/slices/SlicesManager.cjs.map +1 -1
- package/dist/managers/slices/SlicesManager.d.ts +14 -0
- package/dist/managers/slices/SlicesManager.js +48 -0
- package/dist/managers/slices/SlicesManager.js.map +1 -1
- package/dist/managers/telemetry/types.cjs +16 -2
- package/dist/managers/telemetry/types.cjs.map +1 -1
- package/dist/managers/telemetry/types.d.ts +52 -1
- package/dist/managers/telemetry/types.js +16 -2
- package/dist/managers/telemetry/types.js.map +1 -1
- package/package.json +2 -2
- package/src/constants/API_ENDPOINTS.ts +7 -0
- package/src/managers/prismicRepository/PrismicRepositoryManager.ts +90 -0
- package/src/managers/slices/SlicesManager.ts +92 -0
- package/src/managers/telemetry/types.ts +88 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/managers/telemetry/types.ts"],"sourcesContent":["import {\n\tFieldType,\n\tLinkConfig,\n} from \"@prismicio/types-internal/lib/customtypes/widgets\";\n\nimport { CustomTypeFormat } from \"../customTypes/types\";\nimport type { PushChangesLimitType } from \"../prismicRepository/types\";\n\nexport type { Variant } from \"@amplitude/experiment-node-server\";\n\nexport const SegmentEventType = {\n\tcommand_init_start: \"command:init:start\",\n\tcommand_init_identify: \"command:init:identify\",\n\tcommand_init_end: \"command:init:end\",\n\tsliceSimulator_open: \"slice-simulator:open\",\n\tsliceSimulator_isNotRunning: \"slice-simulator:is-not-running\",\n\tpageView: \"page-view\",\n\topenVideoTutorials: \"open-video-tutorials\",\n\tfield_added: \"field:added\",\n\tfield_updated: \"field:updated\",\n\tfield_settingsOpened: \"field:settings-opened\",\n\tcustomType_created: \"custom-type:created\",\n\tcustomType_sliceZoneUpdated: \"custom-type:slice-zone-updated\",\n\tcustomType_openAddFromTemplates: \"custom-type:open-add-from-templates\",\n\tcustomType_saved: \"custom-type:saved\",\n\tslice_created: \"slice:created\",\n\tlegacySlice_converted: \"legacy-slice:converted\",\n\tscreenshotTaken: \"screenshot-taken\",\n\tchanges_pushed: \"changes:pushed\",\n\tchanges_groupPushed: \"changes:group-pushed\",\n\tchanges_limitReach: \"changes:limit-reach\",\n\teditor_widgetUsed: \"editor:widget-used\",\n\topen_page_snippet: \"page-type:open-snippet\",\n\tcopy_page_snippet: \"page-type:copy-snippet\",\n\tswitch_environment: \"environment:switch\",\n\tdevCollab_joinBetaClicked: \"dev-collab:join-beta-clicked\",\n\tdevCollab_setUpWorkflowOpened: \"dev-collab:set-up-workflow-opened\",\n\tdevCollab_workflowStubDisplayed: \"dev-collab:workflow-stub-displayed\",\n\tsliceMachine_start: \"slice-machine:start\",\n\tpostPush_emptyStateCtaClicked: \"post-push:empty-state-cta-clicked\",\n\tpostPush_toastCtaClicked: \"post-push:toast-cta-clicked\",\n\texperiment_exposure: \"experiment:exposure\",\n\tsharedOnboarding_step_opened: \"shared-onboarding:step-opened\",\n\tsharedOnboarding_step_completed: \"shared-onboarding:step-completed\",\n\tsharedOnboarding_completed: \"shared-onboarding:completed\",\n\tsharedOnboarding_tutorial: \"shared-onboarding:follow-tutorial\",\n\tsliceGenerationFeedback: \"slice-generation-feedback\",\n\tsliceGeneration_pastedFromFigma: \"slice-generation:pasted-from-figma\",\n\tsliceGeneration_started: \"slice-generation:started\",\n\tsliceGeneration_ended: \"slice-generation:ended\",\n\tsliceGeneration_pluginInstallationClicked:\n\t\t\"slice-generation:plugin-installation-clicked\",\n\tnavigation_documentationLinkClicked: \"navigation:documentation-link-clicked\",\n\tsidebar_link_clicked: \"sidebar:link-clicked\",\n\tmcp_promo_link_clicked: \"mcp:promo-link-clicked\",\n\tinfo_banner_dismissed: \"info-banner:dismissed\",\n\tinfo_banner_button_clicked: \"info-banner:button-clicked\",\n} as const;\ntype SegmentEventTypes =\n\t(typeof SegmentEventType)[keyof typeof SegmentEventType];\n\nexport const HumanSegmentEventType = {\n\t[SegmentEventType.command_init_start]: \"SliceMachine Init Start\",\n\t[SegmentEventType.command_init_identify]: \"SliceMachine Init Identify\",\n\t[SegmentEventType.command_init_end]: \"SliceMachine Init End\",\n\t[SegmentEventType.sliceSimulator_open]: \"SliceMachine Slice Simulator Open\",\n\t[SegmentEventType.sliceSimulator_isNotRunning]:\n\t\t\"SliceMachine Slice Simulator is not running\",\n\t[SegmentEventType.pageView]: \"SliceMachine Page View\",\n\t[SegmentEventType.openVideoTutorials]: \"SliceMachine Open Video Tutorials\",\n\t[SegmentEventType.field_added]: \"SliceMachine Field Added\",\n\t[SegmentEventType.field_updated]: \"SliceMachine Field Updated\",\n\t[SegmentEventType.field_settingsOpened]: \"SliceMachine Field Settings Opened\",\n\t[SegmentEventType.customType_created]: \"SliceMachine Custom Type Created\",\n\t[SegmentEventType.customType_sliceZoneUpdated]:\n\t\t\"SliceMachine Slicezone Updated\",\n\t[SegmentEventType.customType_openAddFromTemplates]:\n\t\t\"SliceMachine Open Add from templates\",\n\t[SegmentEventType.customType_saved]: \"SliceMachine Custom Type Saved\",\n\t[SegmentEventType.slice_created]: \"SliceMachine Slice Created\",\n\t[SegmentEventType.legacySlice_converted]:\n\t\t\"SliceMachine Legacy Slice Converted\",\n\t[SegmentEventType.screenshotTaken]: \"SliceMachine Screenshot Taken\",\n\t[SegmentEventType.changes_pushed]: \"SliceMachine Changes Pushed\",\n\t[SegmentEventType.changes_groupPushed]: \"SliceMachine Group Field Pushed\",\n\t[SegmentEventType.changes_limitReach]: \"SliceMachine Changes Limit Reach\",\n\t[SegmentEventType.editor_widgetUsed]: \"SliceMachine Editor Widget Used\",\n\t[SegmentEventType.open_page_snippet]:\n\t\t\"SliceMachine Opens Page Type Snippet Dialog\",\n\t[SegmentEventType.copy_page_snippet]:\n\t\t\"Slice Machine page code snippet copied\",\n\t[SegmentEventType.switch_environment]: \"SliceMachine environment switch\",\n\t[SegmentEventType.devCollab_joinBetaClicked]:\n\t\t\"SliceMachine Dev Collab Join Beta Clicked\",\n\t[SegmentEventType.devCollab_setUpWorkflowOpened]:\n\t\t\"SliceMachine Dev Collab Set Up Workflow Opened\",\n\t[SegmentEventType.devCollab_workflowStubDisplayed]:\n\t\t\"SliceMachine Dev Collab Workflow Stub Displayed\",\n\t[SegmentEventType.sliceMachine_start]: \"SliceMachine Start\",\n\t[SegmentEventType.postPush_emptyStateCtaClicked]:\n\t\t\"SliceMachine Post Push Empty State CTA Clicked\",\n\t[SegmentEventType.postPush_toastCtaClicked]:\n\t\t\"SliceMachine Post Push Toast CTA Clicked\",\n\t[SegmentEventType.experiment_exposure]: \"$exposure\",\n\t[SegmentEventType.sharedOnboarding_step_completed]:\n\t\t\"Prismic Onboarding Guide Step Completed\",\n\t[SegmentEventType.sharedOnboarding_step_opened]:\n\t\t\"Prismic Onboarding Guide Step Open\",\n\t[SegmentEventType.sharedOnboarding_completed]:\n\t\t\"Prismic Onboarding Guide Completed\",\n\t[SegmentEventType.sharedOnboarding_tutorial]:\n\t\t\"Prismic Onboarding Guide Follow Tutorial\",\n\t[SegmentEventType.sliceGenerationFeedback]: \"Slice Generation Feedback\",\n\t[SegmentEventType.sliceGeneration_pastedFromFigma]:\n\t\t\"SliceMachine Shared Slice Generation - Pasted From Figma\",\n\t[SegmentEventType.sliceGeneration_started]:\n\t\t\"SliceMachine Shared Slice Generation - Started\",\n\t[SegmentEventType.sliceGeneration_ended]:\n\t\t\"SliceMachine Shared Slice Generation - Ended\",\n\t[SegmentEventType.sliceGeneration_pluginInstallationClicked]:\n\t\t\"SliceMachine Shared Slice Generation - Plugin Installation Clicked\",\n\t[SegmentEventType.navigation_documentationLinkClicked]:\n\t\t\"SliceMachine Documentation Link Clicked\",\n\t[SegmentEventType.sidebar_link_clicked]: \"Sidebar Link Clicked\",\n\t[SegmentEventType.mcp_promo_link_clicked]: \"MCP Promo Link Clicked\",\n\t[SegmentEventType.info_banner_dismissed]:\n\t\t\"SliceMachine Info Banner Dismissed\",\n\t[SegmentEventType.info_banner_button_clicked]:\n\t\t\"SliceMachine Info Banner Button Clicked\",\n} as const;\n\nexport type HumanSegmentEventTypes =\n\t(typeof HumanSegmentEventType)[keyof typeof HumanSegmentEventType];\n\ntype SegmentEvent<\n\tTType extends SegmentEventTypes,\n\tTProperties extends Record<string, unknown> | void = void,\n> = TProperties extends void\n\t? {\n\t\t\tevent: TType;\n\t\t\trepository?: string;\n\t }\n\t: {\n\t\t\tevent: TType;\n\t\t\trepository?: string;\n\t } & TProperties;\n\ntype CommandInitStartSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_start\n>;\n\n// This event feels off, we have a dedicated `identify` method...\ntype CommandInitIdentifySegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_identify\n>;\n\ntype CommandInitEndSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_end,\n\t{ framework: string; success: boolean; error?: string }\n>;\n\ntype SliceSimulatorOpenSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.sliceSimulator_open\n>;\n\ntype SliceSimulatorIsNotRunningSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.sliceSimulator_isNotRunning\n>;\n\ntype PageViewSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.pageView,\n\t{\n\t\turl: string;\n\t\tpath: string;\n\t\tsearch: string;\n\t\ttitle: string;\n\t\treferrer: string;\n\t\tadapter: string;\n\t\t/*\n\t\t * We are tracking outer sizes instead of inner sizes as with the latter, we\n\t\t * can't differentiate between users with a high-density screen and those\n\t\t * zooming in/out with ⌘ + / ⌘ -. Indeed, when users zoom in/out, some\n\t\t * browsers (like Google Chrome) will update `window.devicePixelRatio` while\n\t\t * others (like Safari) will keep it unchanged so that it always reflects\n\t\t * the ratio of physical pixels to CSS pixels.\n\t\t */\n\t\touterWidth: number;\n\t\touterHeight: number;\n\t\tscreenWidth: number;\n\t\tscreenHeight: number;\n\t}\n>;\n\ntype OpenPageSnippetSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.open_page_snippet,\n\t{ framework: string }\n>;\n\ntype CopyPageSnippetSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.copy_page_snippet,\n\t{ framework: string }\n>;\n\ntype SwitchEnvironmentSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.switch_environment,\n\t{ domain: string }\n>;\n\ntype OpenVideoTutorialsSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.openVideoTutorials,\n\t{ video: string }\n>;\n\ntype FieldAddedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_added,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t\tallowText?: boolean;\n\t\trepeat?: boolean;\n\t\tvariants?: string[];\n\t\tlinkSelect?: LinkConfig[\"select\"];\n\t\tlinkPickedFields?: number;\n\t\tlinkNestedPickedFields?: number;\n\t}\n>;\n\ntype FieldUpdatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_updated,\n\t{\n\t\tpreviousId: string;\n\t\tid: string;\n\t\tidUpdated: boolean;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t\tallowText?: boolean;\n\t\trepeat?: boolean;\n\t\tvariants?: string[];\n\t\tlinkSelect?: LinkConfig[\"select\"];\n\t\tlinkPickedFields?: number;\n\t\tlinkNestedPickedFields?: number;\n\t}\n>;\n\ntype FieldSettingsOpenedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_settingsOpened,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t}\n>;\n\ntype CustomTypeCreatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_created,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tformat: CustomTypeFormat;\n\t\ttype: \"repeatable\" | \"single\";\n\t\torigin: \"onboarding\" | \"table\";\n\t}\n>;\n\ntype CustomTypeSliceZoneUpdatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_sliceZoneUpdated,\n\t{ customTypeId: string }\n>;\n\ntype CustomTypeOpenAddFromTemplatesEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_openAddFromTemplates,\n\t{ customTypeId: string; customTypeFormat: CustomTypeFormat }\n>;\n\ntype CustomTypeSavedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_saved,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tformat: CustomTypeFormat;\n\t\ttype: \"repeatable\" | \"single\";\n\t}\n>;\n\ntype SliceCreatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.slice_created,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tlibrary: string;\n\t\tlocation: \"custom_type\" | \"page_type\" | \"slices\";\n\t} & (\n\t\t| { mode: \"ai\"; langSmithUrl?: string }\n\t\t| { mode: \"figma-to-slice\" }\n\t\t| { mode: \"manual\" }\n\t\t| { mode: \"template\"; sliceTemplate: string }\n\t)\n>;\n\ntype LegacySliceConvertedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.legacySlice_converted,\n\t{\n\t\tid: string;\n\t\tvariation: string;\n\t\tlibrary: string;\n\t\tconversionType:\n\t\t\t| \"as_new_slice\"\n\t\t\t| \"as_new_variation\"\n\t\t\t| \"merge_with_identical\";\n\t}\n>;\n\ntype ScreenshotTakenSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.screenshotTaken,\n\t{\n\t\ttype: \"custom\";\n\t\tmethod: \"upload\" | \"dragAndDrop\";\n\t}\n>;\n\ntype ChangesPushedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_pushed,\n\t{\n\t\tcustomTypesCreated: number;\n\t\tcustomTypesModified: number;\n\t\tcustomTypesDeleted: number;\n\t\tslicesCreated: number;\n\t\tslicesModified: number;\n\t\tslicesDeleted: number;\n\t\tmissingScreenshots: number;\n\t\ttotal: number;\n\t\tduration: number;\n\t\thasDeletedDocuments: boolean;\n\t}\n>;\n\ntype ChangesGroupPushedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_groupPushed,\n\t{\n\t\tisInStaticZone: boolean;\n\t\tisInSlice: boolean;\n\t} & {\n\t\t[key in FieldType]?: number;\n\t}\n>;\n\ntype ChangesLimitReachSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_limitReach,\n\t{ limitType: PushChangesLimitType }\n>;\n\ntype EditorWidgetUsedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.editor_widgetUsed,\n\t{ sliceId: string }\n>;\n\ntype DevCollabJoinBetaClicked = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_joinBetaClicked\n>;\n\ntype DevCollabSetUpWorkflowOpened = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_setUpWorkflowOpened\n>;\n\ntype DevCollabWorkflowStubDisplayed = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_workflowStubDisplayed\n>;\n\ntype SliceMachineStart = SegmentEvent<\n\ttypeof SegmentEventType.sliceMachine_start,\n\t{\n\t\tadapter?: string;\n\t\tadapterVersion?: string;\n\t\tisAdapterUpdateAvailable?: boolean;\n\t\tisLoggedIn?: boolean;\n\t\tisSliceMachineUpdateAvailable?: boolean;\n\t\tisTypeScriptProject?: boolean;\n\t\tnodeVersion?: string;\n\t\tnumberOfCustomTypes?: number;\n\t\tnumberOfSlices?: number;\n\t\tosPlatform?: string;\n\t\tpackageManager?: string;\n\t\tprojectPort?: string;\n\t\tsliceMachineVersion?: string;\n\t\tversionControlSystem?: string;\n\t}\n>;\n\ntype OnboardingCommonPayload = { stepId: string; stepTitle: string };\ntype SharedOnboardingProperties<T = Record<string, string>> = T & {\n\tsource: \"SliceMachine\";\n};\n\ntype SliceMachineSharedOnboardingStepOpened = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_step_opened,\n\tSharedOnboardingProperties<OnboardingCommonPayload>\n>;\ntype SliceMachineSharedOnboardingStepCompleted = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_step_completed,\n\tSharedOnboardingProperties<OnboardingCommonPayload>\n>;\ntype SliceMachineSharedOnboardingCompleted = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_completed,\n\tSharedOnboardingProperties\n>;\ntype SliceMachineSharedOnboardingTutorial = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_tutorial,\n\tSharedOnboardingProperties\n>;\ntype SliceMachinePostPushEmptyStateCtaClicked = SegmentEvent<\n\ttypeof SegmentEventType.postPush_emptyStateCtaClicked\n>;\n\ntype SliceMachinePostPushToastCtaClicked = SegmentEvent<\n\ttypeof SegmentEventType.postPush_toastCtaClicked\n>;\n\ntype SliceMachineExperimentExposure = SegmentEvent<\n\ttypeof SegmentEventType.experiment_exposure,\n\t{\n\t\tflag_key: string;\n\t\tvariant: string;\n\t}\n>;\n\ntype SliceGenerationFeedback = SegmentEvent<\n\ttypeof SegmentEventType.sliceGenerationFeedback,\n\t{\n\t\ttype: \"model\";\n\t\tsliceId: string;\n\t\tvariationId: string;\n\t\tfeedback: \"up\" | \"down\";\n\t\tlangSmithUrl?: string;\n\t}\n>;\n\ntype SliceGenerationPastedFromFigma = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_pastedFromFigma,\n\t{\n\t\tsource: \"shortcut\" | \"button\";\n\t}\n>;\n\ntype SliceGenerationStarted = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_started,\n\t{\n\t\tsource: \"figma\" | \"upload\";\n\t\tllmProxyUrl: string;\n\t}\n>;\n\ntype SliceGenerationEnded = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_ended,\n\t{\n\t\terror: boolean;\n\t\tsource: \"figma\" | \"upload\";\n\t}\n>;\n\ntype SliceGenerationPluginInstallationClicked = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_pluginInstallationClicked\n>;\n\ntype NavigationDocumentationLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.navigation_documentationLinkClicked,\n\t{\n\t\tframework: string;\n\t}\n>;\n\ntype SidebarLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.sidebar_link_clicked,\n\t{\n\t\tlink_name: string;\n\t\tsource: string;\n\t}\n>;\n\ntype McpPromoLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.mcp_promo_link_clicked,\n\t{\n\t\tsource: string;\n\t\ttarget: string;\n\t}\n>;\n\ntype InfoBannerDismissed = SegmentEvent<\n\ttypeof SegmentEventType.info_banner_dismissed,\n\t{\n\t\tinfoBannerId: string;\n\t}\n>;\n\ntype InfoBannerButtonClicked = SegmentEvent<\n\ttypeof SegmentEventType.info_banner_button_clicked,\n\t{\n\t\tinfoBannerId: string;\n\t}\n>;\n\nexport type SegmentEvents =\n\t| CommandInitStartSegmentEvent\n\t| CommandInitIdentifySegmentEvent\n\t| CommandInitEndSegmentEvent\n\t| SliceSimulatorOpenSegmentEvent\n\t| SliceSimulatorIsNotRunningSegmentEvent\n\t| PageViewSegmentEvent\n\t| OpenVideoTutorialsSegmentEvent\n\t| FieldAddedSegmentEvent\n\t| FieldUpdatedSegmentEvent\n\t| FieldSettingsOpenedSegmentEvent\n\t| CustomTypeCreatedSegmentEvent\n\t| CustomTypeSliceZoneUpdatedSegmentEvent\n\t| CustomTypeOpenAddFromTemplatesEvent\n\t| CustomTypeSavedSegmentEvent\n\t| SliceCreatedSegmentEvent\n\t| LegacySliceConvertedSegmentEvent\n\t| ScreenshotTakenSegmentEvent\n\t| ChangesPushedSegmentEvent\n\t| ChangesGroupPushedSegmentEvent\n\t| ChangesLimitReachSegmentEvent\n\t| EditorWidgetUsedSegmentEvent\n\t| OpenPageSnippetSegmentEvent\n\t| CopyPageSnippetSegmentEvent\n\t| SwitchEnvironmentSegmentEvent\n\t| DevCollabJoinBetaClicked\n\t| DevCollabSetUpWorkflowOpened\n\t| DevCollabWorkflowStubDisplayed\n\t| SliceMachineStart\n\t| SliceMachineSharedOnboardingStepOpened\n\t| SliceMachineSharedOnboardingStepCompleted\n\t| SliceMachineSharedOnboardingCompleted\n\t| SliceMachineSharedOnboardingTutorial\n\t| SliceMachinePostPushEmptyStateCtaClicked\n\t| SliceMachinePostPushToastCtaClicked\n\t| SliceMachineExperimentExposure\n\t| SliceGenerationFeedback\n\t| SliceGenerationPastedFromFigma\n\t| SliceGenerationStarted\n\t| SliceGenerationEnded\n\t| SliceGenerationPluginInstallationClicked\n\t| NavigationDocumentationLinkClicked\n\t| SidebarLinkClicked\n\t| McpPromoLinkClicked\n\t| InfoBannerDismissed\n\t| InfoBannerButtonClicked;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/managers/telemetry/types.ts"],"sourcesContent":["import {\n\tFieldType,\n\tLinkConfig,\n} from \"@prismicio/types-internal/lib/customtypes/widgets\";\n\nimport { CustomTypeFormat } from \"../customTypes/types\";\nimport type { PushChangesLimitType } from \"../prismicRepository/types\";\n\nexport type { Variant } from \"@amplitude/experiment-node-server\";\n\nexport const SegmentEventType = {\n\tcommand_init_start: \"command:init:start\",\n\tcommand_init_identify: \"command:init:identify\",\n\tcommand_init_end: \"command:init:end\",\n\tsliceSimulator_open: \"slice-simulator:open\",\n\tsliceSimulator_isNotRunning: \"slice-simulator:is-not-running\",\n\tpageView: \"page-view\",\n\topenVideoTutorials: \"open-video-tutorials\",\n\tfield_added: \"field:added\",\n\tfield_updated: \"field:updated\",\n\tfield_settingsOpened: \"field:settings-opened\",\n\tcustomType_created: \"custom-type:created\",\n\tcustomType_sliceZoneUpdated: \"custom-type:slice-zone-updated\",\n\tcustomType_openAddFromTemplates: \"custom-type:open-add-from-templates\",\n\tcustomType_saved: \"custom-type:saved\",\n\tslice_created: \"slice:created\",\n\tlegacySlice_converted: \"legacy-slice:converted\",\n\tscreenshotTaken: \"screenshot-taken\",\n\tchanges_pushed: \"changes:pushed\",\n\tchanges_groupPushed: \"changes:group-pushed\",\n\tchanges_limitReach: \"changes:limit-reach\",\n\teditor_widgetUsed: \"editor:widget-used\",\n\topen_page_snippet: \"page-type:open-snippet\",\n\tcopy_page_snippet: \"page-type:copy-snippet\",\n\tswitch_environment: \"environment:switch\",\n\tdevCollab_joinBetaClicked: \"dev-collab:join-beta-clicked\",\n\tdevCollab_setUpWorkflowOpened: \"dev-collab:set-up-workflow-opened\",\n\tdevCollab_workflowStubDisplayed: \"dev-collab:workflow-stub-displayed\",\n\tsliceMachine_start: \"slice-machine:start\",\n\tpostPush_emptyStateCtaClicked: \"post-push:empty-state-cta-clicked\",\n\tpostPush_toastCtaClicked: \"post-push:toast-cta-clicked\",\n\texperiment_exposure: \"experiment:exposure\",\n\tsharedOnboarding_step_opened: \"shared-onboarding:step-opened\",\n\tsharedOnboarding_step_completed: \"shared-onboarding:step-completed\",\n\tsharedOnboarding_completed: \"shared-onboarding:completed\",\n\tsharedOnboarding_tutorial: \"shared-onboarding:follow-tutorial\",\n\tsliceGenerationFeedback: \"slice-generation-feedback\",\n\tsliceGeneration_pastedFromFigma: \"slice-generation:pasted-from-figma\",\n\tsliceGeneration_started: \"slice-generation:started\",\n\tsliceGeneration_ended: \"slice-generation:ended\",\n\tsliceGeneration_pluginInstallationClicked:\n\t\t\"slice-generation:plugin-installation-clicked\",\n\tnavigation_documentationLinkClicked: \"navigation:documentation-link-clicked\",\n\tsidebar_link_clicked: \"sidebar:link-clicked\",\n\tmcp_promo_link_clicked: \"mcp:promo-link-clicked\",\n\tinfo_banner_dismissed: \"info-banner:dismissed\",\n\tinfo_banner_button_clicked: \"info-banner:button-clicked\",\n\tslice_library_opened: \"slice-library:opened\",\n\tslice_library_projects_listed: \"slice-library:projects-listed\",\n\tslice_library_slice_selected: \"slice-library:slice-selected\",\n\tslice_library_fetching_started: \"slice-library:fetching-started\",\n\tslice_library_fetching_ended: \"slice-library:fetching-ended\",\n\tslice_library_import_started: \"slice-library:import-started\",\n\tslice_library_import_ended: \"slice-library:import-ended\",\n} as const;\ntype SegmentEventTypes =\n\t(typeof SegmentEventType)[keyof typeof SegmentEventType];\n\nexport const HumanSegmentEventType = {\n\t[SegmentEventType.command_init_start]: \"SliceMachine Init Start\",\n\t[SegmentEventType.command_init_identify]: \"SliceMachine Init Identify\",\n\t[SegmentEventType.command_init_end]: \"SliceMachine Init End\",\n\t[SegmentEventType.sliceSimulator_open]: \"SliceMachine Slice Simulator Open\",\n\t[SegmentEventType.sliceSimulator_isNotRunning]:\n\t\t\"SliceMachine Slice Simulator is not running\",\n\t[SegmentEventType.pageView]: \"SliceMachine Page View\",\n\t[SegmentEventType.openVideoTutorials]: \"SliceMachine Open Video Tutorials\",\n\t[SegmentEventType.field_added]: \"SliceMachine Field Added\",\n\t[SegmentEventType.field_updated]: \"SliceMachine Field Updated\",\n\t[SegmentEventType.field_settingsOpened]: \"SliceMachine Field Settings Opened\",\n\t[SegmentEventType.customType_created]: \"SliceMachine Custom Type Created\",\n\t[SegmentEventType.customType_sliceZoneUpdated]:\n\t\t\"SliceMachine Slicezone Updated\",\n\t[SegmentEventType.customType_openAddFromTemplates]:\n\t\t\"SliceMachine Open Add from templates\",\n\t[SegmentEventType.customType_saved]: \"SliceMachine Custom Type Saved\",\n\t[SegmentEventType.slice_created]: \"SliceMachine Slice Created\",\n\t[SegmentEventType.legacySlice_converted]:\n\t\t\"SliceMachine Legacy Slice Converted\",\n\t[SegmentEventType.screenshotTaken]: \"SliceMachine Screenshot Taken\",\n\t[SegmentEventType.changes_pushed]: \"SliceMachine Changes Pushed\",\n\t[SegmentEventType.changes_groupPushed]: \"SliceMachine Group Field Pushed\",\n\t[SegmentEventType.changes_limitReach]: \"SliceMachine Changes Limit Reach\",\n\t[SegmentEventType.editor_widgetUsed]: \"SliceMachine Editor Widget Used\",\n\t[SegmentEventType.open_page_snippet]:\n\t\t\"SliceMachine Opens Page Type Snippet Dialog\",\n\t[SegmentEventType.copy_page_snippet]:\n\t\t\"Slice Machine page code snippet copied\",\n\t[SegmentEventType.switch_environment]: \"SliceMachine environment switch\",\n\t[SegmentEventType.devCollab_joinBetaClicked]:\n\t\t\"SliceMachine Dev Collab Join Beta Clicked\",\n\t[SegmentEventType.devCollab_setUpWorkflowOpened]:\n\t\t\"SliceMachine Dev Collab Set Up Workflow Opened\",\n\t[SegmentEventType.devCollab_workflowStubDisplayed]:\n\t\t\"SliceMachine Dev Collab Workflow Stub Displayed\",\n\t[SegmentEventType.sliceMachine_start]: \"SliceMachine Start\",\n\t[SegmentEventType.postPush_emptyStateCtaClicked]:\n\t\t\"SliceMachine Post Push Empty State CTA Clicked\",\n\t[SegmentEventType.postPush_toastCtaClicked]:\n\t\t\"SliceMachine Post Push Toast CTA Clicked\",\n\t[SegmentEventType.experiment_exposure]: \"$exposure\",\n\t[SegmentEventType.sharedOnboarding_step_completed]:\n\t\t\"Prismic Onboarding Guide Step Completed\",\n\t[SegmentEventType.sharedOnboarding_step_opened]:\n\t\t\"Prismic Onboarding Guide Step Open\",\n\t[SegmentEventType.sharedOnboarding_completed]:\n\t\t\"Prismic Onboarding Guide Completed\",\n\t[SegmentEventType.sharedOnboarding_tutorial]:\n\t\t\"Prismic Onboarding Guide Follow Tutorial\",\n\t[SegmentEventType.sliceGenerationFeedback]: \"Slice Generation Feedback\",\n\t[SegmentEventType.sliceGeneration_pastedFromFigma]:\n\t\t\"SliceMachine Shared Slice Generation - Pasted From Figma\",\n\t[SegmentEventType.sliceGeneration_started]:\n\t\t\"SliceMachine Shared Slice Generation - Started\",\n\t[SegmentEventType.sliceGeneration_ended]:\n\t\t\"SliceMachine Shared Slice Generation - Ended\",\n\t[SegmentEventType.sliceGeneration_pluginInstallationClicked]:\n\t\t\"SliceMachine Shared Slice Generation - Plugin Installation Clicked\",\n\t[SegmentEventType.navigation_documentationLinkClicked]:\n\t\t\"SliceMachine Documentation Link Clicked\",\n\t[SegmentEventType.sidebar_link_clicked]: \"Sidebar Link Clicked\",\n\t[SegmentEventType.mcp_promo_link_clicked]: \"MCP Promo Link Clicked\",\n\t[SegmentEventType.info_banner_dismissed]:\n\t\t\"SliceMachine Info Banner Dismissed\",\n\t[SegmentEventType.info_banner_button_clicked]:\n\t\t\"SliceMachine Info Banner Button Clicked\",\n\t[SegmentEventType.slice_library_opened]:\n\t\t\"SliceMachine Slice Library - Opened\",\n\t[SegmentEventType.slice_library_projects_listed]:\n\t\t\"SliceMachine Slice Library - Projects Listed\",\n\t[SegmentEventType.slice_library_slice_selected]:\n\t\t\"SliceMachine Slice Library - Slice Selected\",\n\t[SegmentEventType.slice_library_fetching_started]:\n\t\t\"SliceMachine Slice Library - Slice Fetching Started\",\n\t[SegmentEventType.slice_library_fetching_ended]:\n\t\t\"SliceMachine Slice Library - Slice Fetching Ended\",\n\t[SegmentEventType.slice_library_import_started]:\n\t\t\"SliceMachine Slice Library - Slice Import Started\",\n\t[SegmentEventType.slice_library_import_ended]:\n\t\t\"SliceMachine Slice Library - Slice Import Ended\",\n} as const;\n\nexport type HumanSegmentEventTypes =\n\t(typeof HumanSegmentEventType)[keyof typeof HumanSegmentEventType];\n\ntype SegmentEvent<\n\tTType extends SegmentEventTypes,\n\tTProperties extends Record<string, unknown> | void = void,\n> = TProperties extends void\n\t? {\n\t\t\tevent: TType;\n\t\t\trepository?: string;\n\t }\n\t: {\n\t\t\tevent: TType;\n\t\t\trepository?: string;\n\t } & TProperties;\n\ntype CommandInitStartSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_start\n>;\n\n// This event feels off, we have a dedicated `identify` method...\ntype CommandInitIdentifySegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_identify\n>;\n\ntype CommandInitEndSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.command_init_end,\n\t{ framework: string; success: boolean; error?: string }\n>;\n\ntype SliceSimulatorOpenSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.sliceSimulator_open\n>;\n\ntype SliceSimulatorIsNotRunningSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.sliceSimulator_isNotRunning\n>;\n\ntype PageViewSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.pageView,\n\t{\n\t\turl: string;\n\t\tpath: string;\n\t\tsearch: string;\n\t\ttitle: string;\n\t\treferrer: string;\n\t\tadapter: string;\n\t\t/*\n\t\t * We are tracking outer sizes instead of inner sizes as with the latter, we\n\t\t * can't differentiate between users with a high-density screen and those\n\t\t * zooming in/out with ⌘ + / ⌘ -. Indeed, when users zoom in/out, some\n\t\t * browsers (like Google Chrome) will update `window.devicePixelRatio` while\n\t\t * others (like Safari) will keep it unchanged so that it always reflects\n\t\t * the ratio of physical pixels to CSS pixels.\n\t\t */\n\t\touterWidth: number;\n\t\touterHeight: number;\n\t\tscreenWidth: number;\n\t\tscreenHeight: number;\n\t}\n>;\n\ntype OpenPageSnippetSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.open_page_snippet,\n\t{ framework: string }\n>;\n\ntype CopyPageSnippetSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.copy_page_snippet,\n\t{ framework: string }\n>;\n\ntype SwitchEnvironmentSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.switch_environment,\n\t{ domain: string }\n>;\n\ntype OpenVideoTutorialsSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.openVideoTutorials,\n\t{ video: string }\n>;\n\ntype FieldAddedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_added,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t\tallowText?: boolean;\n\t\trepeat?: boolean;\n\t\tvariants?: string[];\n\t\tlinkSelect?: LinkConfig[\"select\"];\n\t\tlinkPickedFields?: number;\n\t\tlinkNestedPickedFields?: number;\n\t}\n>;\n\ntype FieldUpdatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_updated,\n\t{\n\t\tpreviousId: string;\n\t\tid: string;\n\t\tidUpdated: boolean;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t\tallowText?: boolean;\n\t\trepeat?: boolean;\n\t\tvariants?: string[];\n\t\tlinkSelect?: LinkConfig[\"select\"];\n\t\tlinkPickedFields?: number;\n\t\tlinkNestedPickedFields?: number;\n\t}\n>;\n\ntype FieldSettingsOpenedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.field_settingsOpened,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\ttype: FieldType;\n\t\tisInAGroup: boolean;\n\t\tcontentType: \"page type\" | \"custom type\" | \"slice\";\n\t}\n>;\n\ntype CustomTypeCreatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_created,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tformat: CustomTypeFormat;\n\t\ttype: \"repeatable\" | \"single\";\n\t\torigin: \"onboarding\" | \"table\";\n\t}\n>;\n\ntype CustomTypeSliceZoneUpdatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_sliceZoneUpdated,\n\t{ customTypeId: string }\n>;\n\ntype CustomTypeOpenAddFromTemplatesEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_openAddFromTemplates,\n\t{ customTypeId: string; customTypeFormat: CustomTypeFormat }\n>;\n\ntype CustomTypeSavedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.customType_saved,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tformat: CustomTypeFormat;\n\t\ttype: \"repeatable\" | \"single\";\n\t}\n>;\n\ntype SliceCreatedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.slice_created,\n\t{\n\t\tid: string;\n\t\tname: string;\n\t\tlibrary: string;\n\t\tlocation: \"custom_type\" | \"page_type\" | \"slices\";\n\t} & (\n\t\t| { mode: \"ai\"; langSmithUrl?: string }\n\t\t| { mode: \"figma-to-slice\" }\n\t\t| { mode: \"manual\" }\n\t\t| { mode: \"template\"; sliceTemplate: string }\n\t\t| { mode: \"import\" }\n\t)\n>;\n\ntype LegacySliceConvertedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.legacySlice_converted,\n\t{\n\t\tid: string;\n\t\tvariation: string;\n\t\tlibrary: string;\n\t\tconversionType:\n\t\t\t| \"as_new_slice\"\n\t\t\t| \"as_new_variation\"\n\t\t\t| \"merge_with_identical\";\n\t}\n>;\n\ntype ScreenshotTakenSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.screenshotTaken,\n\t{\n\t\ttype: \"custom\";\n\t\tmethod: \"upload\" | \"dragAndDrop\";\n\t}\n>;\n\ntype ChangesPushedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_pushed,\n\t{\n\t\tcustomTypesCreated: number;\n\t\tcustomTypesModified: number;\n\t\tcustomTypesDeleted: number;\n\t\tslicesCreated: number;\n\t\tslicesModified: number;\n\t\tslicesDeleted: number;\n\t\tmissingScreenshots: number;\n\t\ttotal: number;\n\t\tduration: number;\n\t\thasDeletedDocuments: boolean;\n\t}\n>;\n\ntype ChangesGroupPushedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_groupPushed,\n\t{\n\t\tisInStaticZone: boolean;\n\t\tisInSlice: boolean;\n\t} & {\n\t\t[key in FieldType]?: number;\n\t}\n>;\n\ntype ChangesLimitReachSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.changes_limitReach,\n\t{ limitType: PushChangesLimitType }\n>;\n\ntype EditorWidgetUsedSegmentEvent = SegmentEvent<\n\ttypeof SegmentEventType.editor_widgetUsed,\n\t{ sliceId: string }\n>;\n\ntype DevCollabJoinBetaClicked = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_joinBetaClicked\n>;\n\ntype DevCollabSetUpWorkflowOpened = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_setUpWorkflowOpened\n>;\n\ntype DevCollabWorkflowStubDisplayed = SegmentEvent<\n\ttypeof SegmentEventType.devCollab_workflowStubDisplayed\n>;\n\ntype SliceMachineStart = SegmentEvent<\n\ttypeof SegmentEventType.sliceMachine_start,\n\t{\n\t\tadapter?: string;\n\t\tadapterVersion?: string;\n\t\tisAdapterUpdateAvailable?: boolean;\n\t\tisLoggedIn?: boolean;\n\t\tisSliceMachineUpdateAvailable?: boolean;\n\t\tisTypeScriptProject?: boolean;\n\t\tnodeVersion?: string;\n\t\tnumberOfCustomTypes?: number;\n\t\tnumberOfSlices?: number;\n\t\tosPlatform?: string;\n\t\tpackageManager?: string;\n\t\tprojectPort?: string;\n\t\tsliceMachineVersion?: string;\n\t\tversionControlSystem?: string;\n\t}\n>;\n\ntype OnboardingCommonPayload = { stepId: string; stepTitle: string };\ntype SharedOnboardingProperties<T = Record<string, string>> = T & {\n\tsource: \"SliceMachine\";\n};\n\ntype SliceMachineSharedOnboardingStepOpened = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_step_opened,\n\tSharedOnboardingProperties<OnboardingCommonPayload>\n>;\ntype SliceMachineSharedOnboardingStepCompleted = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_step_completed,\n\tSharedOnboardingProperties<OnboardingCommonPayload>\n>;\ntype SliceMachineSharedOnboardingCompleted = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_completed,\n\tSharedOnboardingProperties\n>;\ntype SliceMachineSharedOnboardingTutorial = SegmentEvent<\n\ttypeof SegmentEventType.sharedOnboarding_tutorial,\n\tSharedOnboardingProperties\n>;\ntype SliceMachinePostPushEmptyStateCtaClicked = SegmentEvent<\n\ttypeof SegmentEventType.postPush_emptyStateCtaClicked\n>;\n\ntype SliceMachinePostPushToastCtaClicked = SegmentEvent<\n\ttypeof SegmentEventType.postPush_toastCtaClicked\n>;\n\ntype SliceMachineExperimentExposure = SegmentEvent<\n\ttypeof SegmentEventType.experiment_exposure,\n\t{\n\t\tflag_key: string;\n\t\tvariant: string;\n\t}\n>;\n\ntype SliceGenerationFeedback = SegmentEvent<\n\ttypeof SegmentEventType.sliceGenerationFeedback,\n\t{\n\t\ttype: \"model\";\n\t\tsliceId: string;\n\t\tvariationId: string;\n\t\tfeedback: \"up\" | \"down\";\n\t\tlangSmithUrl?: string;\n\t}\n>;\n\ntype SliceGenerationPastedFromFigma = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_pastedFromFigma,\n\t{\n\t\tsource: \"shortcut\" | \"button\";\n\t}\n>;\n\ntype SliceGenerationStarted = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_started,\n\t{\n\t\tsource: \"figma\" | \"upload\";\n\t\tllmProxyUrl: string;\n\t}\n>;\n\ntype SliceGenerationEnded = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_ended,\n\t{\n\t\terror: boolean;\n\t\tsource: \"figma\" | \"upload\";\n\t}\n>;\n\ntype SliceGenerationPluginInstallationClicked = SegmentEvent<\n\ttypeof SegmentEventType.sliceGeneration_pluginInstallationClicked\n>;\n\ntype NavigationDocumentationLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.navigation_documentationLinkClicked,\n\t{\n\t\tframework: string;\n\t}\n>;\n\ntype SidebarLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.sidebar_link_clicked,\n\t{\n\t\tlink_name: string;\n\t\tsource: string;\n\t}\n>;\n\ntype McpPromoLinkClicked = SegmentEvent<\n\ttypeof SegmentEventType.mcp_promo_link_clicked,\n\t{\n\t\tsource: string;\n\t\ttarget: string;\n\t}\n>;\n\ntype InfoBannerDismissed = SegmentEvent<\n\ttypeof SegmentEventType.info_banner_dismissed,\n\t{\n\t\tinfoBannerId: string;\n\t}\n>;\n\ntype InfoBannerButtonClicked = SegmentEvent<\n\ttypeof SegmentEventType.info_banner_button_clicked,\n\t{\n\t\tinfoBannerId: string;\n\t}\n>;\n\ntype SliceLibraryOpened = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_opened\n>;\ntype SliceLibraryProjectsListed = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_projects_listed,\n\t{\n\t\trepositories_count: number;\n\t}\n>;\ntype SliceLibrarySliceSelected = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_slice_selected,\n\t{\n\t\tslices_count: number;\n\t\tsource_project_id: string;\n\t\tdestination_project_id: string;\n\t}\n>;\ntype SliceLibraryFetchingStarted = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_fetching_started,\n\t{\n\t\tsource_project_id: string;\n\t}\n>;\ntype SliceLibraryFetchingEnded = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_fetching_ended,\n\t| {\n\t\t\terror: false;\n\t\t\tslices_count: number;\n\t\t\tsource_project_id: string;\n\t }\n\t| {\n\t\t\terror: true;\n\t\t\tslices_count?: never;\n\t\t\tsource_project_id: string;\n\t }\n>;\ntype SliceLibraryImportStarted = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_import_started,\n\t{\n\t\tsource_project_id: string;\n\t}\n>;\ntype SliceLibraryImportEnded = SegmentEvent<\n\ttypeof SegmentEventType.slice_library_import_ended,\n\t| {\n\t\t\terror: false;\n\t\t\tslices_count: number;\n\t\t\tsource_project_id: string;\n\t\t\tdestination_project_id: string;\n\t }\n\t| {\n\t\t\terror: true;\n\t\t\tslices_count?: never;\n\t\t\tsource_project_id: string;\n\t\t\tdestination_project_id: string;\n\t }\n>;\n\nexport type SegmentEvents =\n\t| CommandInitStartSegmentEvent\n\t| CommandInitIdentifySegmentEvent\n\t| CommandInitEndSegmentEvent\n\t| SliceSimulatorOpenSegmentEvent\n\t| SliceSimulatorIsNotRunningSegmentEvent\n\t| PageViewSegmentEvent\n\t| OpenVideoTutorialsSegmentEvent\n\t| FieldAddedSegmentEvent\n\t| FieldUpdatedSegmentEvent\n\t| FieldSettingsOpenedSegmentEvent\n\t| CustomTypeCreatedSegmentEvent\n\t| CustomTypeSliceZoneUpdatedSegmentEvent\n\t| CustomTypeOpenAddFromTemplatesEvent\n\t| CustomTypeSavedSegmentEvent\n\t| SliceCreatedSegmentEvent\n\t| LegacySliceConvertedSegmentEvent\n\t| ScreenshotTakenSegmentEvent\n\t| ChangesPushedSegmentEvent\n\t| ChangesGroupPushedSegmentEvent\n\t| ChangesLimitReachSegmentEvent\n\t| EditorWidgetUsedSegmentEvent\n\t| OpenPageSnippetSegmentEvent\n\t| CopyPageSnippetSegmentEvent\n\t| SwitchEnvironmentSegmentEvent\n\t| DevCollabJoinBetaClicked\n\t| DevCollabSetUpWorkflowOpened\n\t| DevCollabWorkflowStubDisplayed\n\t| SliceMachineStart\n\t| SliceMachineSharedOnboardingStepOpened\n\t| SliceMachineSharedOnboardingStepCompleted\n\t| SliceMachineSharedOnboardingCompleted\n\t| SliceMachineSharedOnboardingTutorial\n\t| SliceMachinePostPushEmptyStateCtaClicked\n\t| SliceMachinePostPushToastCtaClicked\n\t| SliceMachineExperimentExposure\n\t| SliceGenerationFeedback\n\t| SliceGenerationPastedFromFigma\n\t| SliceGenerationStarted\n\t| SliceGenerationEnded\n\t| SliceGenerationPluginInstallationClicked\n\t| NavigationDocumentationLinkClicked\n\t| SidebarLinkClicked\n\t| McpPromoLinkClicked\n\t| InfoBannerDismissed\n\t| InfoBannerButtonClicked\n\t| SliceLibraryOpened\n\t| SliceLibraryProjectsListed\n\t| SliceLibrarySliceSelected\n\t| SliceLibraryFetchingStarted\n\t| SliceLibraryFetchingEnded\n\t| SliceLibraryImportStarted\n\t| SliceLibraryImportEnded;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/manager",
|
|
3
|
-
"version": "0.26.7-alpha.
|
|
3
|
+
"version": "0.26.7-alpha.jp-import-slice-base.1",
|
|
4
4
|
"description": "Manage all aspects of a Slice Machine project.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@prismicio/mocks": "2.14.0",
|
|
72
72
|
"@prismicio/types-internal": "3.11.2",
|
|
73
73
|
"@segment/analytics-node": "^2.1.2",
|
|
74
|
-
"@slicemachine/plugin-kit": "0.4.92-alpha.
|
|
74
|
+
"@slicemachine/plugin-kit": "0.4.92-alpha.jp-import-slice-base.1",
|
|
75
75
|
"cookie": "^1.0.1",
|
|
76
76
|
"cors": "^2.8.5",
|
|
77
77
|
"execa": "^7.1.1",
|
|
@@ -13,6 +13,7 @@ export type APIEndpoints = {
|
|
|
13
13
|
RepositoryService: string;
|
|
14
14
|
LocaleService: string;
|
|
15
15
|
CustomTypeService: string;
|
|
16
|
+
GitService: string;
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export const API_ENDPOINTS: APIEndpoints = (() => {
|
|
@@ -47,6 +48,9 @@ export const API_ENDPOINTS: APIEndpoints = (() => {
|
|
|
47
48
|
process.env.custom_type_api ??
|
|
48
49
|
"https://api.internal.wroom.io/custom-type/",
|
|
49
50
|
),
|
|
51
|
+
GitService: addTrailingSlash(
|
|
52
|
+
process.env.git_service_api ?? "https://api.internal.wroom.io/git/",
|
|
53
|
+
),
|
|
50
54
|
};
|
|
51
55
|
|
|
52
56
|
const missingAPIEndpoints = Object.keys(apiEndpoints).filter((key) => {
|
|
@@ -96,6 +100,7 @@ If you didn't intend to run Slice Machine this way, stop it immediately and unse
|
|
|
96
100
|
RepositoryService: "https://api.internal.wroom.io/repository/",
|
|
97
101
|
LocaleService: "https://api.internal.wroom.io/locale/",
|
|
98
102
|
CustomTypeService: "https://api.internal.wroom.io/custom-type/",
|
|
103
|
+
GitService: "https://api.internal.wroom.io/git/",
|
|
99
104
|
};
|
|
100
105
|
}
|
|
101
106
|
|
|
@@ -114,6 +119,7 @@ If you didn't intend to run Slice Machine this way, stop it immediately and unse
|
|
|
114
119
|
RepositoryService: `https://api.internal.${process.env.SM_ENV}-wroom.com/repository/`,
|
|
115
120
|
LocaleService: `https://api.internal.${process.env.SM_ENV}-wroom.com/locale/`,
|
|
116
121
|
CustomTypeService: `https://api.internal.${process.env.SM_ENV}-wroom.com/custom-type/`,
|
|
122
|
+
GitService: `https://api.internal.${process.env.SM_ENV}-wroom.com/git/`,
|
|
117
123
|
};
|
|
118
124
|
}
|
|
119
125
|
|
|
@@ -131,6 +137,7 @@ If you didn't intend to run Slice Machine this way, stop it immediately and unse
|
|
|
131
137
|
RepositoryService: "https://api.internal.prismic.io/repository/",
|
|
132
138
|
LocaleService: "https://api.internal.prismic.io/locale/",
|
|
133
139
|
CustomTypeService: "https://api.internal.prismic.io/custom-type/",
|
|
140
|
+
GitService: "https://api.internal.prismic.io/git/",
|
|
134
141
|
};
|
|
135
142
|
}
|
|
136
143
|
}
|
|
@@ -83,6 +83,34 @@ type PrismicRepositoryManagerFetchEnvironmentsReturnType = {
|
|
|
83
83
|
environments?: Environment[];
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
+
const GitIntegrationsSchema = z.object({
|
|
87
|
+
integrations: z.array(
|
|
88
|
+
z.discriminatedUnion("status", [
|
|
89
|
+
z.object({
|
|
90
|
+
id: z.string(),
|
|
91
|
+
status: z.literal("connected"),
|
|
92
|
+
owner: z.string(),
|
|
93
|
+
repositories: z.array(
|
|
94
|
+
z.object({
|
|
95
|
+
name: z.string(),
|
|
96
|
+
fullName: z.string(),
|
|
97
|
+
}),
|
|
98
|
+
),
|
|
99
|
+
}),
|
|
100
|
+
z.object({
|
|
101
|
+
id: z.string(),
|
|
102
|
+
status: z.literal("broken"),
|
|
103
|
+
owner: z.string().optional(),
|
|
104
|
+
repositories: z.tuple([]),
|
|
105
|
+
}),
|
|
106
|
+
]),
|
|
107
|
+
),
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const GitIntegrationTokenSchema = z.object({
|
|
111
|
+
token: z.string(),
|
|
112
|
+
});
|
|
113
|
+
|
|
86
114
|
export class PrismicRepositoryManager extends BaseManager {
|
|
87
115
|
// TODO: Add methods for repository-specific actions. E.g. creating a
|
|
88
116
|
// new repository.
|
|
@@ -705,6 +733,68 @@ export class PrismicRepositoryManager extends BaseManager {
|
|
|
705
733
|
}
|
|
706
734
|
}
|
|
707
735
|
|
|
736
|
+
async fetchGitIntegrations(): Promise<z.infer<typeof GitIntegrationsSchema>> {
|
|
737
|
+
const repositoryName = await this.project.getRepositoryName();
|
|
738
|
+
|
|
739
|
+
const url = new URL("integrations", API_ENDPOINTS.GitService);
|
|
740
|
+
url.searchParams.set("repository", repositoryName);
|
|
741
|
+
|
|
742
|
+
const res = await this._fetch({ url });
|
|
743
|
+
|
|
744
|
+
if (!res.ok) {
|
|
745
|
+
const text = await res.text();
|
|
746
|
+
throw new Error(
|
|
747
|
+
`Failed to fetch integrations for repository ${repositoryName}`,
|
|
748
|
+
{ cause: text },
|
|
749
|
+
);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
const json = await res.json();
|
|
753
|
+
const { value, error } = decode(GitIntegrationsSchema, json);
|
|
754
|
+
|
|
755
|
+
if (error) {
|
|
756
|
+
throw new UnexpectedDataError(
|
|
757
|
+
`Failed to decode integrations: ${error.errors.join(", ")}`,
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
return value;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
async fetchGitIntegrationToken(args: {
|
|
765
|
+
integrationId: string;
|
|
766
|
+
}): Promise<z.infer<typeof GitIntegrationTokenSchema>> {
|
|
767
|
+
const { integrationId } = args;
|
|
768
|
+
const repositoryName = await this.project.getRepositoryName();
|
|
769
|
+
|
|
770
|
+
const url = new URL(
|
|
771
|
+
`integrations/${integrationId}/token`,
|
|
772
|
+
API_ENDPOINTS.GitService,
|
|
773
|
+
);
|
|
774
|
+
url.searchParams.set("repository", repositoryName);
|
|
775
|
+
|
|
776
|
+
const res = await this._fetch({ url, method: "POST" });
|
|
777
|
+
|
|
778
|
+
if (!res.ok) {
|
|
779
|
+
const text = await res.text();
|
|
780
|
+
throw new Error(
|
|
781
|
+
`Failed to fetch token for integration ${integrationId}`,
|
|
782
|
+
{ cause: text },
|
|
783
|
+
);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
const json = await res.json();
|
|
787
|
+
const { value, error } = decode(GitIntegrationTokenSchema, json);
|
|
788
|
+
|
|
789
|
+
if (error) {
|
|
790
|
+
throw new UnexpectedDataError(
|
|
791
|
+
`Failed to decode integration token: ${error.errors.join(", ")}`,
|
|
792
|
+
);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
return value;
|
|
796
|
+
}
|
|
797
|
+
|
|
708
798
|
private _decodeLimitOrThrow(
|
|
709
799
|
potentialLimit: unknown,
|
|
710
800
|
statusCode: number,
|
|
@@ -20,6 +20,8 @@ import {
|
|
|
20
20
|
SliceRenameHookData,
|
|
21
21
|
SliceUpdateHook,
|
|
22
22
|
} from "@slicemachine/plugin-kit";
|
|
23
|
+
import { writeSliceFile } from "@slicemachine/plugin-kit/fs";
|
|
24
|
+
import pLimit from "p-limit";
|
|
23
25
|
|
|
24
26
|
import { DecodeError } from "../../lib/DecodeError";
|
|
25
27
|
import { assertPluginsInitialized } from "../../lib/assertPluginsInitialized";
|
|
@@ -98,6 +100,22 @@ type SliceMachineManagerReadSliceScreenshotArgs = {
|
|
|
98
100
|
variationID: string;
|
|
99
101
|
};
|
|
100
102
|
|
|
103
|
+
type SliceFile = {
|
|
104
|
+
path: string;
|
|
105
|
+
contents: string | Buffer; // String for plain text files, Buffer for binary files
|
|
106
|
+
isBinary: boolean;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
type SliceMachineManagerWriteSliceFilesArgs = {
|
|
110
|
+
libraryID: string;
|
|
111
|
+
sliceID: string;
|
|
112
|
+
files: SliceFile[];
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
type SliceMachineManagerWriteSliceFilesReturnType = {
|
|
116
|
+
errors: (HookError | DecodeError)[];
|
|
117
|
+
};
|
|
118
|
+
|
|
101
119
|
type SliceMachineManagerReadSliceScreenshotReturnType = {
|
|
102
120
|
data: Buffer | undefined;
|
|
103
121
|
errors: (DecodeError | HookError)[];
|
|
@@ -1126,4 +1144,78 @@ export class SlicesManager extends BaseManager {
|
|
|
1126
1144
|
|
|
1127
1145
|
return { errors: customTypeReadErrors };
|
|
1128
1146
|
}
|
|
1147
|
+
|
|
1148
|
+
async writeSliceFiles(
|
|
1149
|
+
args: SliceMachineManagerWriteSliceFilesArgs,
|
|
1150
|
+
): Promise<SliceMachineManagerWriteSliceFilesReturnType> {
|
|
1151
|
+
assertPluginsInitialized(this.sliceMachinePluginRunner);
|
|
1152
|
+
|
|
1153
|
+
const { libraryID, sliceID, files } = args;
|
|
1154
|
+
|
|
1155
|
+
// Read the slice model to get helpers
|
|
1156
|
+
const { model, errors: readSliceErrors } = await this.readSlice({
|
|
1157
|
+
libraryID,
|
|
1158
|
+
sliceID,
|
|
1159
|
+
});
|
|
1160
|
+
|
|
1161
|
+
if (!model) {
|
|
1162
|
+
return {
|
|
1163
|
+
errors: readSliceErrors,
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
// Write each file using writeSliceFile from plugin-kit with bounded concurrency
|
|
1168
|
+
const errors: HookError[] = [];
|
|
1169
|
+
const helpers = this.sliceMachinePluginRunner.rawHelpers;
|
|
1170
|
+
const limit = pLimit(8);
|
|
1171
|
+
await Promise.all(
|
|
1172
|
+
files.map((file) =>
|
|
1173
|
+
limit(async () => {
|
|
1174
|
+
try {
|
|
1175
|
+
const writtenPath = await writeSliceFile({
|
|
1176
|
+
libraryID,
|
|
1177
|
+
model,
|
|
1178
|
+
filename: file.path,
|
|
1179
|
+
contents: file.contents,
|
|
1180
|
+
helpers,
|
|
1181
|
+
});
|
|
1182
|
+
console.info(
|
|
1183
|
+
`Successfully wrote file: ${file.path} -> ${writtenPath}`,
|
|
1184
|
+
);
|
|
1185
|
+
} catch (error) {
|
|
1186
|
+
const errorMessage =
|
|
1187
|
+
error instanceof Error
|
|
1188
|
+
? error.message
|
|
1189
|
+
: `Failed to write file ${file.path}`;
|
|
1190
|
+
|
|
1191
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
1192
|
+
console.error(`Error writing file ${file.path}:`, errorMessage);
|
|
1193
|
+
if (errorStack) {
|
|
1194
|
+
console.error(`Stack trace:`, errorStack);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
const owner =
|
|
1198
|
+
this.sliceMachinePluginRunner?.hooksForType(
|
|
1199
|
+
"slice:asset:update",
|
|
1200
|
+
)[0]?.meta.owner ?? "SlicesManager";
|
|
1201
|
+
|
|
1202
|
+
errors.push(
|
|
1203
|
+
new HookError(
|
|
1204
|
+
{
|
|
1205
|
+
id: "writeSliceFile",
|
|
1206
|
+
type: "slice:asset:update",
|
|
1207
|
+
owner,
|
|
1208
|
+
},
|
|
1209
|
+
error,
|
|
1210
|
+
),
|
|
1211
|
+
);
|
|
1212
|
+
}
|
|
1213
|
+
}),
|
|
1214
|
+
),
|
|
1215
|
+
);
|
|
1216
|
+
|
|
1217
|
+
return {
|
|
1218
|
+
errors,
|
|
1219
|
+
};
|
|
1220
|
+
}
|
|
1129
1221
|
}
|
|
@@ -55,6 +55,13 @@ export const SegmentEventType = {
|
|
|
55
55
|
mcp_promo_link_clicked: "mcp:promo-link-clicked",
|
|
56
56
|
info_banner_dismissed: "info-banner:dismissed",
|
|
57
57
|
info_banner_button_clicked: "info-banner:button-clicked",
|
|
58
|
+
slice_library_opened: "slice-library:opened",
|
|
59
|
+
slice_library_projects_listed: "slice-library:projects-listed",
|
|
60
|
+
slice_library_slice_selected: "slice-library:slice-selected",
|
|
61
|
+
slice_library_fetching_started: "slice-library:fetching-started",
|
|
62
|
+
slice_library_fetching_ended: "slice-library:fetching-ended",
|
|
63
|
+
slice_library_import_started: "slice-library:import-started",
|
|
64
|
+
slice_library_import_ended: "slice-library:import-ended",
|
|
58
65
|
} as const;
|
|
59
66
|
type SegmentEventTypes =
|
|
60
67
|
(typeof SegmentEventType)[keyof typeof SegmentEventType];
|
|
@@ -127,6 +134,20 @@ export const HumanSegmentEventType = {
|
|
|
127
134
|
"SliceMachine Info Banner Dismissed",
|
|
128
135
|
[SegmentEventType.info_banner_button_clicked]:
|
|
129
136
|
"SliceMachine Info Banner Button Clicked",
|
|
137
|
+
[SegmentEventType.slice_library_opened]:
|
|
138
|
+
"SliceMachine Slice Library - Opened",
|
|
139
|
+
[SegmentEventType.slice_library_projects_listed]:
|
|
140
|
+
"SliceMachine Slice Library - Projects Listed",
|
|
141
|
+
[SegmentEventType.slice_library_slice_selected]:
|
|
142
|
+
"SliceMachine Slice Library - Slice Selected",
|
|
143
|
+
[SegmentEventType.slice_library_fetching_started]:
|
|
144
|
+
"SliceMachine Slice Library - Slice Fetching Started",
|
|
145
|
+
[SegmentEventType.slice_library_fetching_ended]:
|
|
146
|
+
"SliceMachine Slice Library - Slice Fetching Ended",
|
|
147
|
+
[SegmentEventType.slice_library_import_started]:
|
|
148
|
+
"SliceMachine Slice Library - Slice Import Started",
|
|
149
|
+
[SegmentEventType.slice_library_import_ended]:
|
|
150
|
+
"SliceMachine Slice Library - Slice Import Ended",
|
|
130
151
|
} as const;
|
|
131
152
|
|
|
132
153
|
export type HumanSegmentEventTypes =
|
|
@@ -301,6 +322,7 @@ type SliceCreatedSegmentEvent = SegmentEvent<
|
|
|
301
322
|
| { mode: "figma-to-slice" }
|
|
302
323
|
| { mode: "manual" }
|
|
303
324
|
| { mode: "template"; sliceTemplate: string }
|
|
325
|
+
| { mode: "import" }
|
|
304
326
|
)
|
|
305
327
|
>;
|
|
306
328
|
|
|
@@ -505,6 +527,64 @@ type InfoBannerButtonClicked = SegmentEvent<
|
|
|
505
527
|
}
|
|
506
528
|
>;
|
|
507
529
|
|
|
530
|
+
type SliceLibraryOpened = SegmentEvent<
|
|
531
|
+
typeof SegmentEventType.slice_library_opened
|
|
532
|
+
>;
|
|
533
|
+
type SliceLibraryProjectsListed = SegmentEvent<
|
|
534
|
+
typeof SegmentEventType.slice_library_projects_listed,
|
|
535
|
+
{
|
|
536
|
+
repositories_count: number;
|
|
537
|
+
}
|
|
538
|
+
>;
|
|
539
|
+
type SliceLibrarySliceSelected = SegmentEvent<
|
|
540
|
+
typeof SegmentEventType.slice_library_slice_selected,
|
|
541
|
+
{
|
|
542
|
+
slices_count: number;
|
|
543
|
+
source_project_id: string;
|
|
544
|
+
destination_project_id: string;
|
|
545
|
+
}
|
|
546
|
+
>;
|
|
547
|
+
type SliceLibraryFetchingStarted = SegmentEvent<
|
|
548
|
+
typeof SegmentEventType.slice_library_fetching_started,
|
|
549
|
+
{
|
|
550
|
+
source_project_id: string;
|
|
551
|
+
}
|
|
552
|
+
>;
|
|
553
|
+
type SliceLibraryFetchingEnded = SegmentEvent<
|
|
554
|
+
typeof SegmentEventType.slice_library_fetching_ended,
|
|
555
|
+
| {
|
|
556
|
+
error: false;
|
|
557
|
+
slices_count: number;
|
|
558
|
+
source_project_id: string;
|
|
559
|
+
}
|
|
560
|
+
| {
|
|
561
|
+
error: true;
|
|
562
|
+
slices_count?: never;
|
|
563
|
+
source_project_id: string;
|
|
564
|
+
}
|
|
565
|
+
>;
|
|
566
|
+
type SliceLibraryImportStarted = SegmentEvent<
|
|
567
|
+
typeof SegmentEventType.slice_library_import_started,
|
|
568
|
+
{
|
|
569
|
+
source_project_id: string;
|
|
570
|
+
}
|
|
571
|
+
>;
|
|
572
|
+
type SliceLibraryImportEnded = SegmentEvent<
|
|
573
|
+
typeof SegmentEventType.slice_library_import_ended,
|
|
574
|
+
| {
|
|
575
|
+
error: false;
|
|
576
|
+
slices_count: number;
|
|
577
|
+
source_project_id: string;
|
|
578
|
+
destination_project_id: string;
|
|
579
|
+
}
|
|
580
|
+
| {
|
|
581
|
+
error: true;
|
|
582
|
+
slices_count?: never;
|
|
583
|
+
source_project_id: string;
|
|
584
|
+
destination_project_id: string;
|
|
585
|
+
}
|
|
586
|
+
>;
|
|
587
|
+
|
|
508
588
|
export type SegmentEvents =
|
|
509
589
|
| CommandInitStartSegmentEvent
|
|
510
590
|
| CommandInitIdentifySegmentEvent
|
|
@@ -550,4 +630,11 @@ export type SegmentEvents =
|
|
|
550
630
|
| SidebarLinkClicked
|
|
551
631
|
| McpPromoLinkClicked
|
|
552
632
|
| InfoBannerDismissed
|
|
553
|
-
| InfoBannerButtonClicked
|
|
633
|
+
| InfoBannerButtonClicked
|
|
634
|
+
| SliceLibraryOpened
|
|
635
|
+
| SliceLibraryProjectsListed
|
|
636
|
+
| SliceLibrarySliceSelected
|
|
637
|
+
| SliceLibraryFetchingStarted
|
|
638
|
+
| SliceLibraryFetchingEnded
|
|
639
|
+
| SliceLibraryImportStarted
|
|
640
|
+
| SliceLibraryImportEnded;
|