camox 0.44.0 → 0.46.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.
- package/dist/components/AuthGate.js +0 -6
- package/dist/components/DeviceSelector.js +96 -0
- package/dist/components/PlatformLabel.js +20 -24
- package/dist/core/components/lexical/HighlightNode.js +1 -1
- package/dist/core/components/lexical/InlineContentEditable.js +15 -19
- package/dist/core/components/lexical/InlineLexicalEditor.js +54 -74
- package/dist/core/components/lexical/InlineStylesPlugin.js +53 -53
- package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
- package/dist/core/components/lexical/SelectionBroadcaster.js +53 -54
- package/dist/core/components/lexical/SidebarLexicalEditor.js +322 -229
- package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
- package/dist/core/components/lexical/TextLinkPopover.js +169 -180
- package/dist/core/createApp.d.ts +241 -312
- package/dist/core/createApp.js +123 -29
- package/dist/core/createBlock.d.ts +5 -5
- package/dist/core/createBlock.js +385 -152
- package/dist/core/createCollection.d.ts +55 -0
- package/dist/core/createCollection.js +93 -0
- package/dist/core/createLayout.d.ts +197 -61
- package/dist/core/createLayout.js +114 -56
- package/dist/core/defineDocument.d.ts +3 -5
- package/dist/core/derivedRoutes.js +49 -1
- package/dist/core/dom.d.ts +13 -4
- package/dist/core/dom.js +44 -1
- package/dist/core/editing/BlockEditingRuntime.d.ts +16 -0
- package/dist/core/editing/BlockEditingRuntime.js +6 -15
- package/dist/core/editing/CompleteBlockEditingRuntime.js +28 -23
- package/dist/core/editing/createEditableBlock.d.ts +754 -633
- package/dist/core/editing/createEditableBlock.js +2113 -1066
- package/dist/core/editing/referenceWrites.js +51 -0
- package/dist/core/editing/useLatestRecord.js +90 -0
- package/dist/core/hooks/useArtifactHost.js +139 -0
- package/dist/core/hooks/useFieldSelection.js +43 -18
- package/dist/core/hooks/useIsEditable.js +12 -10
- package/dist/core/hooks/useOverlayMessage.js +15 -19
- package/dist/core/lib/artifact.d.ts +21 -0
- package/dist/core/lib/artifact.js +154 -0
- package/dist/core/lib/artifactColors.js +123 -0
- package/dist/core/lib/artifactData.d.ts +1 -0
- package/dist/core/lib/artifactData.js +131 -0
- package/dist/core/lib/artifactHost.js +205 -0
- package/dist/core/lib/artifactRuntime.js +36 -0
- package/dist/core/lib/artifactTheme.js +57 -0
- package/dist/core/lib/contentType.d.ts +302 -106
- package/dist/core/lib/contentType.js +201 -173
- package/dist/core/lib/fieldTypes.js +3 -0
- package/dist/core/lib/iconTypes.d.ts +3 -3
- package/dist/core/lib/icons.d.ts +4 -4
- package/dist/core/lib/icons.js +40 -44
- package/dist/core/lib/imagePlaceholder.js +177 -0
- package/dist/core/lib/imageTransform.js +1 -1
- package/dist/core/lib/lexicalReact.d.ts +3 -1
- package/dist/core/lib/lexicalState.js +1 -1
- package/dist/core/lib/previewPaused.js +9 -0
- package/dist/core/lib/recordScope.js +316 -0
- package/dist/core/lib/reference.d.ts +81 -0
- package/dist/core/lib/reference.js +29 -0
- package/dist/core/lib/textLinks.js +7 -5
- package/dist/core/lib/textStyles.d.ts +5 -7
- package/dist/core/lib/textStyles.js +2 -2
- package/dist/core/notFound.d.ts +7 -0
- package/dist/core/notFound.js +11 -0
- package/dist/core/pageDestinations.js +6 -3
- package/dist/core/recordItem.js +34 -0
- package/dist/core/requestContext.d.ts +26 -0
- package/dist/core/requestContext.js +20 -0
- package/dist/features/canvas/CamoxCanvas.js +1401 -0
- package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
- package/dist/features/canvas/CanvasOverlays.js +254 -0
- package/dist/features/canvas/CanvasPageEdge.js +87 -0
- package/dist/features/canvas/CanvasPageFrame.js +333 -0
- package/dist/features/canvas/CanvasPageHeader.js +125 -0
- package/dist/features/canvas/CanvasPreviewPageSlot.js +123 -0
- package/dist/features/canvas/DerivedPagePathInput.js +238 -0
- package/dist/features/canvas/canvasCamera.js +229 -0
- package/dist/features/canvas/canvasFlight.js +104 -0
- package/dist/features/canvas/canvasFrameCapture.js +364 -0
- package/dist/features/canvas/canvasFrameDocument.js +302 -0
- package/dist/features/canvas/canvasFrameMode.js +53 -0
- package/dist/features/canvas/canvasInsertionSeams.js +44 -0
- package/dist/features/canvas/canvasItems.js +30 -0
- package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
- package/dist/features/canvas/canvasPages.js +79 -0
- package/dist/features/canvas/canvasScreenSpace.js +26 -0
- package/dist/features/canvas/canvasSelection.js +18 -0
- package/dist/features/canvas/canvasStore.js +60 -0
- package/dist/features/canvas/canvasThumbnails.js +304 -0
- package/dist/features/canvas/canvasZoom.js +10 -0
- package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
- package/dist/features/canvas/sidebar/CanvasNavigator.js +124 -0
- package/dist/features/canvas/sidebar/CanvasSidebar.js +54 -0
- package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
- package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
- package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
- package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
- package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
- package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
- package/dist/features/canvas/sidebar/PageInspector.js +157 -0
- package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
- package/dist/features/canvas/sidebar/PageOverview.js +27 -0
- package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
- package/dist/features/canvas/useCanvasCamera.js +783 -0
- package/dist/features/canvas/useCanvasFrame.js +148 -0
- package/dist/features/canvas/useCanvasFrameInput.js +97 -0
- package/dist/features/canvas/useCanvasNearness.js +57 -0
- package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
- package/dist/features/content/CamoxContent.d.ts +2 -5
- package/dist/features/content/CamoxContent.js +174 -271
- package/dist/features/content/CollectionItemSheetContext.js +106 -0
- package/dist/features/content/ContentAssets.js +315 -0
- package/dist/features/content/ContentCollection.js +663 -0
- package/dist/features/content/collection-form.js +58 -0
- package/dist/features/content/components/AssetCard.js +80 -84
- package/dist/features/content/components/AssetCardSkeleton.js +4 -8
- package/dist/features/content/components/ContentSidebar.js +129 -18
- package/dist/features/content/components/ContentSidebarGroup.js +37 -0
- package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
- package/dist/features/content/components/MissingFromLocale.js +282 -0
- package/dist/features/content/components/UploadDropZone.js +27 -31
- package/dist/features/content/components/UploadProgressDrawer.js +90 -98
- package/dist/features/navigation/navigation.d.ts +66 -20
- package/dist/features/navigation/navigation.js +257 -90
- package/dist/features/og/defaultFonts.js +8 -8
- package/dist/features/og/geist-variable-ttf-base64.js +1 -1
- package/dist/features/og/imageResponse.d.ts +8 -0
- package/dist/features/og/imageResponse.js +26 -0
- package/dist/features/page/CuratedPageContent.js +167 -0
- package/dist/features/page/DerivedPageContent.js +26 -30
- package/dist/features/page/SharedLayoutContent.js +25 -27
- package/dist/features/preview/CamoxPreview.d.ts +23 -61
- package/dist/features/preview/CamoxPreview.js +816 -537
- package/dist/features/preview/EditablePageContent.js +1 -1
- package/dist/features/preview/EditablePageExperience.js +16 -22
- package/dist/features/preview/components/AddBlockSheet.js +273 -0
- package/dist/features/preview/components/AssetFieldEditor.js +173 -154
- package/dist/features/preview/components/AssetLightbox.js +181 -134
- package/dist/features/preview/components/AssetPickerModal.js +153 -170
- package/dist/features/preview/components/BlockActionsPopover.js +150 -149
- package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
- package/dist/features/preview/components/BlockThumbnail.js +172 -98
- package/dist/features/preview/components/CanvasPreview.js +243 -0
- package/dist/features/preview/components/CreatePageModal.js +128 -137
- package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
- package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
- package/dist/features/preview/components/DrillRow.js +150 -0
- package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
- package/dist/features/preview/components/FieldToolbar.js +160 -110
- package/dist/features/preview/components/Frame.js +108 -20
- package/dist/features/preview/components/IconFieldEditor.js +62 -66
- package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
- package/dist/features/preview/components/LinkFieldEditor.js +135 -139
- package/dist/features/preview/components/Metadata.js +22 -30
- package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
- package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
- package/dist/features/preview/components/OverlayTracker.js +9 -41
- package/dist/features/preview/components/Overlays.js +81 -69
- package/dist/features/preview/components/PageInfo.js +1748 -0
- package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
- package/dist/features/preview/components/PageLocationFieldset.js +112 -116
- package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
- package/dist/features/preview/components/PageNicknameField.js +22 -26
- package/dist/features/preview/components/PagePicker.js +128 -130
- package/dist/features/preview/components/PageTree.js +525 -532
- package/dist/features/preview/components/PreviewActivation.js +28 -32
- package/dist/features/preview/components/PreviewPanel.js +620 -319
- package/dist/features/preview/components/PreviewToolbar.js +105 -333
- package/dist/features/preview/components/RecordCard.js +80 -0
- package/dist/features/preview/components/RecordCombobox.js +178 -0
- package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
- package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
- package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
- package/dist/features/preview/components/RepeatableItemsList.js +125 -138
- package/dist/features/preview/components/SelectionEditor.js +993 -0
- package/dist/features/preview/components/ShikiMarkdown.js +14 -18
- package/dist/features/preview/components/SidebarSection.js +52 -64
- package/dist/features/preview/components/StudioEditingFallback.js +56 -0
- package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
- package/dist/features/preview/components/blockGridNavigation.js +15 -0
- package/dist/features/preview/components/contentFieldSchema.js +8 -0
- package/dist/features/preview/components/useFieldWriter.js +200 -0
- package/dist/features/preview/components/useRecordView.js +383 -0
- package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
- package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
- package/dist/features/preview/editingFrame.js +197 -0
- package/dist/features/preview/overlayHighlights.js +17 -44
- package/dist/features/preview/overlayMessages.js +72 -1
- package/dist/features/preview/pageRecord.js +189 -0
- package/dist/features/preview/previewConstants.js +6 -2
- package/dist/features/preview/previewPageFrame.js +95 -0
- package/dist/features/preview/previewPreparation.js +7 -0
- package/dist/features/preview/previewSelection.js +32 -63
- package/dist/features/preview/previewStore.js +225 -123
- package/dist/features/preview/referencePickerFocus.js +29 -0
- package/dist/features/preview/repeatableItemTargets.js +56 -0
- package/dist/features/preview/selectionReveal.js +21 -0
- package/dist/features/preview/usePreviewViewportActions.js +114 -0
- package/dist/features/preview/viewportContinuity.js +109 -0
- package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
- package/dist/features/provider/CamoxProvider.d.ts +3 -6
- package/dist/features/provider/CamoxProvider.js +38 -50
- package/dist/features/provider/CoreCamoxProvider.js +69 -50
- package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
- package/dist/features/provider/PreviewSignInPage.js +54 -0
- package/dist/features/provider/components/CamoxAppContext.js +11 -11
- package/dist/features/provider/components/CommandPalette.js +75 -82
- package/dist/features/provider/useAdminShortcuts.js +7 -11
- package/dist/features/routes/pageRuntime.d.ts +44 -4
- package/dist/features/routes/pageRuntime.js +244 -137
- package/dist/features/runtime/RuntimeChrome.js +117 -115
- package/dist/features/runtime/alternates.js +64 -0
- package/dist/features/runtime/analytics.d.ts +7 -0
- package/dist/features/runtime/analytics.js +66 -0
- package/dist/features/runtime/artifactSources.js +87 -0
- package/dist/features/runtime/editingFallback.js +20 -0
- package/dist/features/runtime/linkPrefetch.js +97 -0
- package/dist/features/runtime/livePages.js +62 -0
- package/dist/features/runtime/llmsTxt.js +40 -0
- package/dist/features/runtime/loopbackFetch.js +18 -0
- package/dist/features/runtime/navigationAccessibility.js +51 -0
- package/dist/features/runtime/navigationTarget.js +23 -2
- package/dist/features/runtime/pageApp.js +229 -158
- package/dist/features/runtime/pageBlockTypes.js +20 -0
- package/dist/features/runtime/pageClient.d.ts +2 -4
- package/dist/features/runtime/pageClient.js +18 -3
- package/dist/features/runtime/pageNavigation.js +254 -32
- package/dist/features/runtime/pageServer.d.ts +2 -4
- package/dist/features/runtime/pageServer.js +6 -2
- package/dist/features/runtime/pageViewport.js +7 -0
- package/dist/features/runtime/runtime.d.ts +54 -24
- package/dist/features/runtime/runtime.js +766 -191
- package/dist/features/runtime/runtimeChromeLoader.js +58 -0
- package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
- package/dist/features/runtime/runtimeRoutes.js +25 -0
- package/dist/features/runtime/scrollRestoration.js +133 -0
- package/dist/features/runtime/studioApp.d.ts +4 -3
- package/dist/features/runtime/studioApp.js +5 -9
- package/dist/features/runtime/studioClient.d.ts +2 -4
- package/dist/features/runtime/studioClient.js +12 -3
- package/dist/features/runtime/studioServer.d.ts +2 -4
- package/dist/features/runtime/studioServer.js +6 -1
- package/dist/features/runtime/worker.d.ts +6 -0
- package/dist/features/runtime/worker.js +23 -0
- package/dist/features/runtime/workerRequest.js +44 -0
- package/dist/features/studio/CamoxStudio.d.ts +2 -6
- package/dist/features/studio/CamoxStudio.js +34 -49
- package/dist/features/studio/FollowAgentProvider.js +327 -0
- package/dist/features/studio/components/ChatSidebar.js +356 -0
- package/dist/features/studio/components/DraftsControl.js +676 -0
- package/dist/features/studio/components/FaviconDialog.js +318 -0
- package/dist/features/studio/components/LocalePicker.js +785 -0
- package/dist/features/studio/components/Navbar.js +123 -103
- package/dist/features/studio/components/ProjectMenu.js +239 -260
- package/dist/features/studio/components/RenameDraftDialog.js +206 -0
- package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
- package/dist/features/studio/components/ThreadComposer.js +157 -0
- package/dist/features/studio/components/ThreadMarkdown.js +113 -0
- package/dist/features/studio/components/ThreadMessages.js +270 -0
- package/dist/features/studio/components/UserButton.js +34 -23
- package/dist/features/studio/draftLabel.js +33 -0
- package/dist/features/studio/draftNotice.js +13 -0
- package/dist/features/studio/followAgent.js +241 -0
- package/dist/features/studio/followAgentContext.js +7 -0
- package/dist/features/studio/localeOptions.js +118 -0
- package/dist/features/studio/localeSwitch.js +19 -0
- package/dist/features/studio/routes.js +26 -1
- package/dist/features/studio/studioStore.js +64 -1
- package/dist/features/studio/useTheme.js +24 -27
- package/dist/features/vite/artifactRuntimeMinification.js +36 -0
- package/dist/features/vite/blockBoilerplate.js +6 -5
- package/dist/features/vite/blockChunks.js +31 -0
- package/dist/features/vite/bundlerLogs.js +17 -0
- package/dist/features/vite/definitionsSync.js +158 -226
- package/dist/features/vite/devAuthentication.js +4 -16
- package/dist/features/vite/devSignIn.js +87 -0
- package/dist/features/vite/iconGeneration.js +1 -1
- package/dist/features/vite/layoutGeneration.js +11 -1
- package/dist/features/vite/publishSeededContent.js +30 -0
- package/dist/features/vite/routeGeneration.js +6 -7
- package/dist/features/vite/runtimeDev.js +80 -99
- package/dist/features/vite/vite.d.ts +51 -31
- package/dist/features/vite/vite.js +224 -127
- package/dist/features/vite/workerBuild.js +39 -0
- package/dist/hooks/use-debounced-field.js +116 -47
- package/dist/hooks/use-file-upload.js +114 -67
- package/dist/hooks/use-marquee-selection.js +32 -36
- package/dist/hooks/use-page-destinations.js +69 -37
- package/dist/lib/api-client-server.d.ts +5 -0
- package/dist/lib/api-client-server.js +10 -4
- package/dist/lib/api-client.d.ts +6 -0
- package/dist/lib/api-client.js +51 -16
- package/dist/lib/api-socket.js +17 -0
- package/dist/lib/auth-page-styles.js +39 -0
- package/dist/lib/auth.js +129 -61
- package/dist/lib/collection-cache.js +23 -0
- package/dist/lib/draft-scope.d.ts +4 -0
- package/dist/lib/draft-scope.js +222 -0
- package/dist/lib/html.js +12 -0
- package/dist/lib/link-pages.js +154 -0
- package/dist/lib/locale-path.d.ts +22 -0
- package/dist/lib/locale-path.js +57 -0
- package/dist/lib/normalized-data.js +252 -152
- package/dist/lib/preview-handoff.js +2 -2
- package/dist/lib/queries.d.ts +11 -0
- package/dist/lib/queries.js +70 -141
- package/dist/lib/studio-reads.d.ts +14 -0
- package/dist/lib/studio-reads.js +554 -0
- package/dist/lib/use-project-room.js +50 -50
- package/dist/lib/use-thread.js +310 -0
- package/dist/lib/utils.js +25 -29
- package/dist/lib/view-locale-context.js +22 -0
- package/dist/lib/view-locale.js +46 -0
- package/dist/package.js +5 -0
- package/dist/studio-overlays.css +41 -151
- package/dist/studio.css +2 -2
- package/package.json +70 -73
- package/skills/camox/SKILL.md +16 -11
- package/skills/camox/references/artifacts.md +179 -0
- package/skills/camox/references/block-definitions.md +75 -59
- package/skills/camox/references/cli-common.md +9 -11
- package/skills/camox/references/cli-content.md +92 -69
- package/skills/camox/references/cli-publishing.md +26 -0
- package/skills/camox/references/dom-integrations.md +27 -0
- package/skills/camox/references/field-styling.md +4 -4
- package/skills/camox/references/layout-definitions.md +16 -14
- package/skills/camox/references/localization.md +56 -0
- package/skills/camox/references/routed-layouts.md +133 -15
- package/skills/camox-expand/SKILL.md +70 -0
- package/skills/camox-expand/references/jobs.md +39 -0
- package/skills/camoxify/SKILL.md +29 -7
- package/dist/core/components/AddBlockControlBar.js +0 -78
- package/dist/core/hooks/useRequireDraftSource.js +0 -23
- package/dist/features/metadata/sitemap.d.ts +0 -8
- package/dist/features/metadata/sitemap.js +0 -17
- package/dist/features/og/imageResponse.node.d.ts +0 -12
- package/dist/features/og/imageResponse.node.js +0 -49
- package/dist/features/og/imageResponse.workerd.d.ts +0 -12
- package/dist/features/og/imageResponse.workerd.js +0 -40
- package/dist/features/page/PublishedPageContent.js +0 -205
- package/dist/features/page/PublishedPageExperience.js +0 -23
- package/dist/features/preview/DerivedPreview.js +0 -134
- package/dist/features/preview/commentsEnabled.js +0 -8
- package/dist/features/preview/components/AddBlockSidebar.js +0 -381
- package/dist/features/preview/components/AttachedComments.js +0 -331
- package/dist/features/preview/components/CommentHeader.js +0 -122
- package/dist/features/preview/components/CommentSidebar.js +0 -29
- package/dist/features/preview/components/CommentTargetQuote.js +0 -167
- package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
- package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
- package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
- package/dist/features/preview/components/LeftSidebar.js +0 -68
- package/dist/features/preview/components/PageEditorSidebar.js +0 -563
- package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
- package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
- package/dist/features/preview/components/PageStatusBadge.js +0 -97
- package/dist/features/preview/components/PeekedBlock.js +0 -217
- package/dist/features/preview/components/PreviewComments.js +0 -56
- package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
- package/dist/features/preview/components/PublicationRow.js +0 -422
- package/dist/features/preview/components/PublishDialog.js +0 -194
- package/dist/features/preview/components/RightSidebar.js +0 -59
- package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
- package/dist/features/preview/previewCommentsStore.js +0 -135
- package/dist/features/preview/publication.js +0 -81
- package/dist/features/preview/usePageComments.js +0 -39
- package/dist/features/runtime/SharedChromeContext.js +0 -7
- package/dist/features/studio/components/EnvironmentMenu.js +0 -425
- package/dist/features/vite/appGeneration.js +0 -89
- package/dist/lib/view-queries.js +0 -28
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.d.ts +0 -115
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.d.ts +0 -38
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.d.ts +0 -65
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
- package/skills/camox/references/cli-environments.md +0 -37
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { STUDIO_ROUTE_SEGMENT } from "../studio/routes.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { readFileSync, unlinkSync } from "node:fs";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region src/features/vite/routeGeneration.ts
|
|
6
6
|
const HEADER = `/* ============================================================================
|
|
@@ -15,7 +15,8 @@ const HEADER = `/* =============================================================
|
|
|
15
15
|
// @ts-nocheck
|
|
16
16
|
|
|
17
17
|
`;
|
|
18
|
-
|
|
18
|
+
/** Deletes the route files that the old TanStack integration generated. */
|
|
19
|
+
function cleanupGeneratedRouteFiles(routesDir) {
|
|
19
20
|
const camoxDir = resolve(routesDir, "_camox");
|
|
20
21
|
const studioDir = resolve(routesDir, "(camox)", "(_studio)");
|
|
21
22
|
const obsoletePaths = [
|
|
@@ -34,7 +35,8 @@ function removeObsoleteRouteFiles(routesDir) {
|
|
|
34
35
|
resolve(routesDir, "(camox)", "(_preview)", "og.tsx"),
|
|
35
36
|
resolve(studioDir, `${STUDIO_ROUTE_SEGMENT}.tsx`),
|
|
36
37
|
resolve(studioDir, `${STUDIO_ROUTE_SEGMENT}.$.tsx`),
|
|
37
|
-
resolve(studioDir, `${STUDIO_ROUTE_SEGMENT}.content.tsx`)
|
|
38
|
+
resolve(studioDir, `${STUDIO_ROUTE_SEGMENT}.content.tsx`),
|
|
39
|
+
resolve(studioDir, `${STUDIO_ROUTE_SEGMENT}.content.assets.tsx`)
|
|
38
40
|
];
|
|
39
41
|
for (const filePath of obsoletePaths) try {
|
|
40
42
|
if (!readFileSync(filePath, "utf-8").startsWith(HEADER)) continue;
|
|
@@ -44,9 +46,6 @@ function removeObsoleteRouteFiles(routesDir) {
|
|
|
44
46
|
throw error;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
|
-
function cleanupGeneratedRouteFiles(routesDir) {
|
|
48
|
-
removeObsoleteRouteFiles(routesDir);
|
|
49
|
-
}
|
|
50
49
|
|
|
51
50
|
//#endregion
|
|
52
51
|
export { cleanupGeneratedRouteFiles };
|
|
@@ -5,12 +5,11 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
//#region src/features/vite/runtimeDev.ts
|
|
6
6
|
const sdkRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../../..");
|
|
7
7
|
const VIRTUAL_CAMOX_APP = "virtual:camox/app";
|
|
8
|
-
const RESOLVED_VIRTUAL_CAMOX_APP = "\
|
|
8
|
+
const RESOLVED_VIRTUAL_CAMOX_APP = "\0virtual:camox/app";
|
|
9
9
|
const VIRTUAL_CAMOX_DOCUMENT = "virtual:camox/document";
|
|
10
|
-
const RESOLVED_VIRTUAL_CAMOX_DOCUMENT = "\
|
|
10
|
+
const RESOLVED_VIRTUAL_CAMOX_DOCUMENT = "\0virtual:camox/document";
|
|
11
11
|
const VIRTUAL_CAMOX_SERVER = "virtual:camox/server";
|
|
12
|
-
const RESOLVED_VIRTUAL_CAMOX_SERVER = "\
|
|
13
|
-
const VIRTUAL_CAMOX_NITRO_HANDLER = "#camox/nitro-handler";
|
|
12
|
+
const RESOLVED_VIRTUAL_CAMOX_SERVER = "\0virtual:camox/server";
|
|
14
13
|
const VIRTUAL_PAGE_SERVER = "virtual:camox/page-server";
|
|
15
14
|
const RESOLVED_VIRTUAL_PAGE_SERVER = "\0" + VIRTUAL_PAGE_SERVER;
|
|
16
15
|
const VIRTUAL_STUDIO_SERVER = "virtual:camox/studio-server";
|
|
@@ -23,12 +22,16 @@ const VIRTUAL_STUDIO_CLIENT = "virtual:camox/studio-client";
|
|
|
23
22
|
const RESOLVED_VIRTUAL_STUDIO_CLIENT = "\0" + VIRTUAL_STUDIO_CLIENT;
|
|
24
23
|
const VIRTUAL_STUDIO_CLIENT_URL = "virtual:camox/studio-client-url";
|
|
25
24
|
const RESOLVED_VIRTUAL_STUDIO_CLIENT_URL = "\0" + VIRTUAL_STUDIO_CLIENT_URL;
|
|
25
|
+
const VIRTUAL_BLOCK_CHUNKS = "virtual:camox/block-chunks";
|
|
26
|
+
const RESOLVED_VIRTUAL_BLOCK_CHUNKS = "\0" + VIRTUAL_BLOCK_CHUNKS;
|
|
26
27
|
const VIRTUAL_APP_STYLESHEET_URL = "virtual:camox/app-stylesheet-url";
|
|
27
28
|
const RESOLVED_VIRTUAL_APP_STYLESHEET_URL = "\0" + VIRTUAL_APP_STYLESHEET_URL;
|
|
28
29
|
const VIRTUAL_STUDIO_CSS = "virtual:camox-studio-css";
|
|
29
30
|
const RESOLVED_VIRTUAL_STUDIO_CSS = "\0" + VIRTUAL_STUDIO_CSS;
|
|
30
31
|
const VIRTUAL_OVERLAY_CSS = "virtual:camox-overlay-css";
|
|
31
32
|
const RESOLVED_VIRTUAL_OVERLAY_CSS = "\0" + VIRTUAL_OVERLAY_CSS;
|
|
33
|
+
const VIRTUAL_DEV_HTML = "virtual:camox/dev-html";
|
|
34
|
+
const RESOLVED_VIRTUAL_DEV_HTML = "\0" + VIRTUAL_DEV_HTML;
|
|
32
35
|
function normalizeImporterPath(importer) {
|
|
33
36
|
if (!importer) return "";
|
|
34
37
|
const [path] = importer.split("?");
|
|
@@ -62,27 +65,65 @@ function resolveCamoxSourceImport(id) {
|
|
|
62
65
|
"camox/_internal/pageClient": resolve(sdkRoot, "src/features/runtime/pageClient.tsx"),
|
|
63
66
|
"camox/_internal/studioClient": resolve(sdkRoot, "src/features/runtime/studioClient.tsx"),
|
|
64
67
|
"camox/_internal/studioServer": resolve(sdkRoot, "src/features/runtime/studioServer.tsx"),
|
|
65
|
-
"camox/_internal/runtime": resolve(sdkRoot, "src/features/runtime/runtime.ts")
|
|
68
|
+
"camox/_internal/runtime": resolve(sdkRoot, "src/features/runtime/runtime.ts"),
|
|
69
|
+
"camox/worker": resolve(sdkRoot, "src/features/runtime/worker.ts")
|
|
66
70
|
}[id];
|
|
67
71
|
if (!sourceImport || !existsSync(sourceImport)) return;
|
|
68
72
|
return sourceImport;
|
|
69
73
|
}
|
|
70
|
-
|
|
74
|
+
/**
|
|
75
|
+
* The server loads every block. The browser loads blocks on demand, one module each, so
|
|
76
|
+
* visitors only download the blocks of the pages they see.
|
|
77
|
+
*/
|
|
78
|
+
function generateVirtualCamoxApp(ssr) {
|
|
71
79
|
return `import { createApp } from "camox/createApp";
|
|
80
|
+
import { camoxDocument } from "virtual:camox/document";
|
|
72
81
|
|
|
73
|
-
const
|
|
74
|
-
const
|
|
82
|
+
const rootCollectionModules = import.meta.glob("/src/collections/*.{ts,tsx}", { eager: true });
|
|
83
|
+
const legacyCollectionModules = import.meta.glob("/src/camox/collections/*.{ts,tsx}", { eager: true });
|
|
75
84
|
const rootLayoutModules = import.meta.glob("/src/layouts/*.{ts,tsx}", { eager: true });
|
|
76
85
|
const legacyLayoutModules = import.meta.glob("/src/camox/layouts/*.{ts,tsx}", { eager: true });
|
|
77
86
|
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
${ssr ? `const rootBlockModules = import.meta.glob("/src/blocks/*.{ts,tsx}", { eager: true });
|
|
88
|
+
const legacyBlockModules = import.meta.glob("/src/camox/blocks/*.{ts,tsx}", { eager: true });
|
|
89
|
+
const blockEntries = Object.entries({ ...rootBlockModules, ...legacyBlockModules }).filter(
|
|
90
|
+
([, mod]) => mod.block,
|
|
91
|
+
);
|
|
92
|
+
const blocks = blockEntries.map(([, mod]) => mod.block);
|
|
93
|
+
const lazyBlocks = {};
|
|
94
|
+
|
|
95
|
+
/** Each block's module, which the browser loads, so pages can preload it. */
|
|
96
|
+
export const blockModulePaths = Object.fromEntries(
|
|
97
|
+
blockEntries.map(([path, mod]) => [mod.block._internal.id, path]),
|
|
98
|
+
);` : `const blockLoaders = {
|
|
99
|
+
...import.meta.glob("/src/blocks/*.{ts,tsx}", { import: "block" }),
|
|
100
|
+
...import.meta.glob("/src/camox/blocks/*.{ts,tsx}", { import: "block" }),
|
|
101
|
+
};
|
|
102
|
+
const blocks = [];
|
|
103
|
+
// Keyed by file name, which is the block's id by convention.
|
|
104
|
+
const lazyBlocks = Object.fromEntries(
|
|
105
|
+
Object.entries(blockLoaders).map(([path, load]) => [
|
|
106
|
+
path.slice(path.lastIndexOf("/") + 1).replace(/\\.tsx?$/, ""),
|
|
107
|
+
load,
|
|
108
|
+
]),
|
|
109
|
+
);`}
|
|
81
110
|
const layouts = [...Object.values(rootLayoutModules), ...Object.values(legacyLayoutModules)]
|
|
82
111
|
.map((mod) => mod.Layout ?? mod.layout)
|
|
83
112
|
.filter(Boolean);
|
|
113
|
+
const collections = [
|
|
114
|
+
...Object.values(rootCollectionModules),
|
|
115
|
+
...Object.values(legacyCollectionModules),
|
|
116
|
+
]
|
|
117
|
+
.map((mod) => mod.collection)
|
|
118
|
+
.filter(Boolean);
|
|
84
119
|
|
|
85
|
-
export const camoxApp = createApp({
|
|
120
|
+
export const camoxApp = createApp({
|
|
121
|
+
blocks,
|
|
122
|
+
lazyBlocks,
|
|
123
|
+
layouts,
|
|
124
|
+
collections,
|
|
125
|
+
document: camoxDocument,
|
|
126
|
+
});
|
|
86
127
|
`;
|
|
87
128
|
}
|
|
88
129
|
function generateVirtualCamoxDocument() {
|
|
@@ -143,7 +184,8 @@ export default stylesheetUrl;
|
|
|
143
184
|
}
|
|
144
185
|
function generateVirtualCamoxServer(runtimeBasePath) {
|
|
145
186
|
return `import { handleCamoxRequest as handleRuntimeRequest } from "camox/_internal/runtime";
|
|
146
|
-
import { camoxApp } from "virtual:camox/app";
|
|
187
|
+
import { blockModulePaths, camoxApp } from "virtual:camox/app";
|
|
188
|
+
import blockChunks from "virtual:camox/block-chunks";
|
|
147
189
|
import { camoxDocument } from "virtual:camox/document";
|
|
148
190
|
import appStylesheetUrl from "virtual:camox/app-stylesheet-url";
|
|
149
191
|
import studioStylesheetUrl from "virtual:camox-studio-css";
|
|
@@ -151,17 +193,22 @@ import pageClientEntryUrl from "virtual:camox/page-client-url";
|
|
|
151
193
|
import studioClientEntryUrl from "virtual:camox/studio-client-url";
|
|
152
194
|
import { renderPage } from "virtual:camox/page-server";
|
|
153
195
|
import { renderStudio } from "virtual:camox/studio-server";
|
|
196
|
+
import devHtml from "virtual:camox/dev-html";
|
|
197
|
+
|
|
198
|
+
export { devHtml };
|
|
199
|
+
export const runtimeBasePath = ${JSON.stringify(normalizeRuntimeBasePath(runtimeBasePath))};
|
|
154
200
|
|
|
155
201
|
export async function handleCamoxRequest(request) {
|
|
156
202
|
return handleRuntimeRequest(request, {
|
|
157
203
|
apiUrl: __CAMOX_API_URL__,
|
|
158
204
|
authenticationUrl: __CAMOX_AUTHENTICATION_URL__,
|
|
205
|
+
blockPreloads: { modulePaths: blockModulePaths, chunks: blockChunks },
|
|
159
206
|
pageClientEntryUrl,
|
|
160
207
|
studioClientEntryUrl,
|
|
161
|
-
|
|
208
|
+
developmentDraft: __CAMOX_DEVELOPMENT_DRAFT__,
|
|
162
209
|
getCamoxApp: async () => camoxApp,
|
|
163
210
|
getDocument: async () => camoxDocument,
|
|
164
|
-
|
|
211
|
+
projectUuid: __CAMOX_PROJECT_ID__,
|
|
165
212
|
renderPage,
|
|
166
213
|
renderStudio,
|
|
167
214
|
runtimeBasePath: ${JSON.stringify(runtimeBasePath)},
|
|
@@ -171,72 +218,6 @@ export async function handleCamoxRequest(request) {
|
|
|
171
218
|
}
|
|
172
219
|
`;
|
|
173
220
|
}
|
|
174
|
-
function generateVirtualCamoxNitroHandler(runtimeBasePath) {
|
|
175
|
-
return `import { defineHandler } from "nitro";
|
|
176
|
-
import { handleCamoxRequest } from "virtual:camox/server";
|
|
177
|
-
|
|
178
|
-
const runtimeBasePath = ${JSON.stringify(normalizeRuntimeBasePath(runtimeBasePath))};
|
|
179
|
-
|
|
180
|
-
function isDocumentRequest(request) {
|
|
181
|
-
const accept = request.headers.get("Accept") ?? request.headers.get("accept") ?? "";
|
|
182
|
-
return accept.includes("text/html") || accept.includes("*/*");
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
function getRuntimePathname(pathname) {
|
|
186
|
-
if (!runtimeBasePath) return pathname;
|
|
187
|
-
if (pathname === runtimeBasePath) return "/";
|
|
188
|
-
if (!pathname.startsWith(runtimeBasePath + "/")) return null;
|
|
189
|
-
return pathname.slice(runtimeBasePath.length) || "/";
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
function shouldHandleRequest(request) {
|
|
193
|
-
const url = new URL(request.url);
|
|
194
|
-
const pathname = getRuntimePathname(url.pathname);
|
|
195
|
-
if (!pathname) return false;
|
|
196
|
-
if (request.method !== "GET" && request.method !== "HEAD") return false;
|
|
197
|
-
if (
|
|
198
|
-
pathname === "/_camox/data" ||
|
|
199
|
-
pathname === "/_camox/health" ||
|
|
200
|
-
pathname === "/_camox/registry"
|
|
201
|
-
) {
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
if (pathname === "/og" || pathname === "/sitemap.xml") return true;
|
|
205
|
-
if (pathname === "/camox" || pathname.startsWith("/camox/")) return true;
|
|
206
|
-
if (/\\.[a-z0-9]+$/i.test(pathname)) return false;
|
|
207
|
-
if (pathname.startsWith("/@") || pathname.startsWith("/src/")) return false;
|
|
208
|
-
if (pathname.startsWith("/__vite")) return false;
|
|
209
|
-
if (pathname.startsWith("/node_modules/")) return false;
|
|
210
|
-
return isDocumentRequest(request);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
async function transformHtmlResponse(response) {
|
|
214
|
-
const contentType = response.headers.get("Content-Type") ?? response.headers.get("content-type") ?? "";
|
|
215
|
-
if (!contentType.includes("text/html")) return response;
|
|
216
|
-
if (!globalThis.__transform_html__) return response;
|
|
217
|
-
|
|
218
|
-
const headers = new Headers(response.headers);
|
|
219
|
-
headers.delete("Content-Length");
|
|
220
|
-
headers.delete("content-length");
|
|
221
|
-
|
|
222
|
-
return new Response(await globalThis.__transform_html__(await response.text()), {
|
|
223
|
-
headers,
|
|
224
|
-
status: response.status,
|
|
225
|
-
statusText: response.statusText,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
export default defineHandler(async (event) => {
|
|
230
|
-
if (!shouldHandleRequest(event.req)) {
|
|
231
|
-
return new Response("Not found", { status: 404 });
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const response = await handleCamoxRequest(event.req);
|
|
235
|
-
if (response) return transformHtmlResponse(response);
|
|
236
|
-
return new Response("Not found", { status: 404 });
|
|
237
|
-
});
|
|
238
|
-
`;
|
|
239
|
-
}
|
|
240
221
|
function resolveRuntimeDevId(id, importer) {
|
|
241
222
|
const camoxSourceImport = resolveCamoxSourceImport(id);
|
|
242
223
|
if (camoxSourceImport) return camoxSourceImport;
|
|
@@ -252,14 +233,16 @@ function resolveRuntimeDevId(id, importer) {
|
|
|
252
233
|
if (id === VIRTUAL_STUDIO_CLIENT) return RESOLVED_VIRTUAL_STUDIO_CLIENT;
|
|
253
234
|
if (id === VIRTUAL_STUDIO_CLIENT_URL) return RESOLVED_VIRTUAL_STUDIO_CLIENT_URL;
|
|
254
235
|
if (id === VIRTUAL_APP_STYLESHEET_URL) return RESOLVED_VIRTUAL_APP_STYLESHEET_URL;
|
|
236
|
+
if (id === VIRTUAL_BLOCK_CHUNKS) return RESOLVED_VIRTUAL_BLOCK_CHUNKS;
|
|
255
237
|
if (id === VIRTUAL_STUDIO_CSS) return RESOLVED_VIRTUAL_STUDIO_CSS;
|
|
256
238
|
if (id === VIRTUAL_OVERLAY_CSS) return RESOLVED_VIRTUAL_OVERLAY_CSS;
|
|
239
|
+
if (id === "virtual:camox/dev-html") return RESOLVED_VIRTUAL_DEV_HTML;
|
|
257
240
|
}
|
|
258
241
|
function loadRuntimeDevModule(id, options = {}) {
|
|
259
|
-
if (id === RESOLVED_VIRTUAL_CAMOX_APP) return generateVirtualCamoxApp();
|
|
242
|
+
if (id === RESOLVED_VIRTUAL_CAMOX_APP) return generateVirtualCamoxApp(options.ssr !== false);
|
|
243
|
+
if (id === RESOLVED_VIRTUAL_BLOCK_CHUNKS) return "export default null;";
|
|
260
244
|
if (id === RESOLVED_VIRTUAL_CAMOX_DOCUMENT) return generateVirtualCamoxDocument();
|
|
261
245
|
if (id === RESOLVED_VIRTUAL_CAMOX_SERVER) return generateVirtualCamoxServer(options.runtimeBasePath);
|
|
262
|
-
if (id === VIRTUAL_CAMOX_NITRO_HANDLER) return generateVirtualCamoxNitroHandler(options.runtimeBasePath);
|
|
263
246
|
if (id === RESOLVED_VIRTUAL_PAGE_SERVER) return generateVirtualPageServer();
|
|
264
247
|
if (id === RESOLVED_VIRTUAL_STUDIO_SERVER) return generateVirtualStudioServer();
|
|
265
248
|
if (id === RESOLVED_VIRTUAL_PAGE_CLIENT) return generateVirtualPageClient();
|
|
@@ -273,26 +256,24 @@ function loadRuntimeDevModule(id, options = {}) {
|
|
|
273
256
|
}
|
|
274
257
|
if (id === RESOLVED_VIRTUAL_OVERLAY_CSS) return `export default ${JSON.stringify(readFileSync(resolve(sdkRoot, "dist/studio-overlays.css"), "utf-8"))};`;
|
|
275
258
|
}
|
|
259
|
+
function createRuntimeRegistryPlugin(options = {}) {
|
|
260
|
+
return {
|
|
261
|
+
name: "camox-runtime-registry",
|
|
262
|
+
enforce: "pre",
|
|
263
|
+
resolveId: resolveRuntimeDevId,
|
|
264
|
+
load(id, loadOptions) {
|
|
265
|
+
return loadRuntimeDevModule(id, {
|
|
266
|
+
...options,
|
|
267
|
+
ssr: loadOptions?.ssr
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
276
272
|
function normalizeRuntimeBasePath(basePath) {
|
|
277
273
|
if (basePath === void 0) return "";
|
|
278
274
|
if (!basePath || basePath === "/") return "";
|
|
279
275
|
return basePath.startsWith("/") ? basePath.replace(/\/+$/, "") : `/${basePath.replace(/\/+$/, "")}`;
|
|
280
276
|
}
|
|
281
|
-
function installRuntimeNitroRoutes(nitro, options) {
|
|
282
|
-
const routes = options.runtimeBasePath && options.runtimeBasePath !== "/" ? [options.runtimeBasePath, `${options.runtimeBasePath}/**`] : [
|
|
283
|
-
"/",
|
|
284
|
-
"/_camox/data",
|
|
285
|
-
"/_camox/health",
|
|
286
|
-
"/_camox/registry",
|
|
287
|
-
"/og",
|
|
288
|
-
"/sitemap.xml",
|
|
289
|
-
"/camox",
|
|
290
|
-
"/camox/**",
|
|
291
|
-
"/**"
|
|
292
|
-
];
|
|
293
|
-
for (const route of routes) nitro.options.routes[route] = VIRTUAL_CAMOX_NITRO_HANDLER;
|
|
294
|
-
nitro.options.virtual[VIRTUAL_CAMOX_NITRO_HANDLER] = generateVirtualCamoxNitroHandler(options.runtimeBasePath);
|
|
295
|
-
}
|
|
296
277
|
|
|
297
278
|
//#endregion
|
|
298
|
-
export {
|
|
279
|
+
export { RESOLVED_VIRTUAL_DEV_HTML, VIRTUAL_DEV_HTML, createRuntimeRegistryPlugin, loadRuntimeDevModule, resolveRuntimeDevId };
|
|
@@ -1,42 +1,62 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ServerApiClient } from "../../lib/api-client-server.js";
|
|
2
|
+
import { Logger, Plugin } from "vite-plus";
|
|
3
3
|
//#region src/features/vite/vite.d.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
publicDir: string;
|
|
12
|
-
serverDir: string;
|
|
13
|
-
};
|
|
14
|
-
routes: Record<string, string>;
|
|
15
|
-
virtual: Record<string, string>;
|
|
16
|
-
};
|
|
4
|
+
/** What `_internal.afterSync` receives: an API client authenticated as the dev user. */
|
|
5
|
+
export interface CamoxAfterSyncContext {
|
|
6
|
+
/** Sends the dev session and reads and writes the developer's development draft. */
|
|
7
|
+
client: ServerApiClient;
|
|
8
|
+
/** The project's Project ID, which API inputs name `projectUuid`. */
|
|
9
|
+
projectUuid: string;
|
|
10
|
+
logger: Logger;
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/** Stable, human-readable slug identifying this project (e.g. "prestigious-impala-84") */
|
|
25
|
-
projectSlug: string;
|
|
12
|
+
export interface CamoxPluginOptions {
|
|
13
|
+
/**
|
|
14
|
+
* The project's Project ID, shown in the Camox dashboard: a lowercase UUIDv7 that never changes
|
|
15
|
+
* (e.g. "01a15fff-627b-7fa1-938b-93ab659c1acc").
|
|
16
|
+
*/
|
|
17
|
+
projectId: string;
|
|
26
18
|
/** Iconify collection available to all icon fields. */
|
|
27
19
|
icons?: string;
|
|
28
20
|
/** Disable telemetry collection (default: false) */
|
|
29
21
|
disableTelemetry?: boolean;
|
|
30
22
|
/** Internal options (intended for Camox contributors in development, not for public use) */
|
|
31
23
|
_internal?: {
|
|
32
|
-
/** URL of the Camox API backend, used for data fetching */
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
/** URL of the Camox API backend, used for data fetching */
|
|
25
|
+
apiUrl?: string;
|
|
26
|
+
/** URL of the Camox authentication backend (default: https://app.camox.dev) */
|
|
27
|
+
authenticationUrl?: string;
|
|
28
|
+
/** Show Tanstack query devtools (default: false) */
|
|
29
|
+
enableTanstackDevtools?: boolean;
|
|
30
|
+
/** Enable experimental features (default: false). */
|
|
31
|
+
enableExperimentalFeatures?: boolean;
|
|
32
|
+
/** Disable automatic code generation (route and layout files) (default: false) */
|
|
33
|
+
disableCodeGen?: boolean;
|
|
34
|
+
/** Mount the Camox-owned dev runtime at this base path. Use "/" for root mode. */
|
|
37
35
|
runtimeBasePath?: string;
|
|
36
|
+
/** Opt-in browser opening for this app's generated development sign-in link. */
|
|
37
|
+
devSignIn?: {
|
|
38
|
+
open?: boolean;
|
|
39
|
+
/** Empty marker file shared across restarts of one dev invocation. */
|
|
40
|
+
openOnceFile?: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Dev-only: runs once per dev server start, after the initial definition sync
|
|
44
|
+
* succeeds. A failure is logged as a warning and never breaks dev.
|
|
45
|
+
*/
|
|
46
|
+
afterSync?: (context: CamoxAfterSyncContext) => void | Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Dev-only: a deploy token for seeding Live. When Live has no pages yet, the first sync
|
|
49
|
+
* releases the local definitions to Live, and the development draft is published after
|
|
50
|
+
* `afterSync`, so seeded content becomes Live instead of the draft's changes.
|
|
51
|
+
*/
|
|
52
|
+
seedLiveDeployToken?: string;
|
|
38
53
|
};
|
|
39
54
|
}
|
|
40
|
-
declare
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
export declare const CAMOX_OPTIMIZED_DEPS: string[];
|
|
56
|
+
/**
|
|
57
|
+
* The Worker runs in workerd, so its dependencies are pre-bundled too. Discovering them one
|
|
58
|
+
* request at a time would reload the Worker for each, so start from the browser's list.
|
|
59
|
+
*/
|
|
60
|
+
export declare const CAMOX_WORKER_OPTIMIZED_DEPS: string[];
|
|
61
|
+
export declare function camox(options: CamoxPluginOptions): Plugin;
|
|
62
|
+
//#endregion
|