@makeswift/runtime 0.24.0-canary.0 → 0.24.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/cjs/api/react.js +28 -7
- package/dist/cjs/api/react.js.map +1 -1
- package/dist/cjs/api/site-version.js +36 -0
- package/dist/cjs/api/site-version.js.map +1 -0
- package/dist/cjs/components/builtin/Box/register.js +3 -3
- package/dist/cjs/components/builtin/Box/register.js.map +1 -1
- package/dist/cjs/components/builtin/Button/register.js +2 -2
- package/dist/cjs/components/builtin/Button/register.js.map +1 -1
- package/dist/cjs/components/builtin/Carousel/Carousel.js +6 -5
- package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/cjs/components/builtin/Carousel/register.js +2 -2
- package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
- package/dist/cjs/components/builtin/Countdown/register.js +2 -2
- package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
- package/dist/cjs/components/builtin/Form/register.js +4 -4
- package/dist/cjs/components/builtin/Form/register.js.map +1 -1
- package/dist/cjs/components/builtin/Image/Image.js +3 -3
- package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
- package/dist/cjs/components/builtin/Navigation/register.js +4 -4
- package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
- package/dist/cjs/components/builtin/SocialLinks/register.js +3 -3
- package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
- package/dist/cjs/components/builtin/Text/register.js +3 -3
- package/dist/cjs/components/builtin/Text/register.js.map +1 -1
- package/dist/cjs/components/hooks/useMediaQuery.js +5 -5
- package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
- package/dist/cjs/components/page/Page.js +7 -4
- package/dist/cjs/components/page/Page.js.map +1 -1
- package/dist/cjs/components/page/PageHead.js +17 -8
- package/dist/cjs/components/page/PageHead.js.map +1 -1
- package/dist/cjs/components/page/page-seo-settings.js +43 -0
- package/dist/cjs/components/page/page-seo-settings.js.map +1 -0
- package/dist/cjs/components/shared/Link/index.js +3 -1
- package/dist/cjs/components/shared/Link/index.js.map +1 -1
- package/dist/cjs/components/utils/responsive-style.js +2 -3
- package/dist/cjs/components/utils/responsive-style.js.map +1 -1
- package/dist/cjs/core/index.js +18 -2
- package/dist/cjs/core/index.js.map +1 -1
- package/dist/cjs/jest-setup.js +3 -0
- package/dist/cjs/jest-setup.js.map +1 -1
- package/dist/cjs/locale.js +79 -0
- package/dist/cjs/locale.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/clear-draft.js +64 -0
- package/dist/cjs/next/api-handler/handlers/clear-draft.js.map +1 -0
- package/dist/cjs/next/api-handler/handlers/manifest.js +3 -2
- package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/redirect-draft.js +77 -0
- package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +1 -0
- package/dist/cjs/next/api-handler/handlers/redirect-preview.js +67 -0
- package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +1 -0
- package/dist/cjs/next/api-handler/handlers/utils/draft.js +53 -0
- package/dist/cjs/next/api-handler/handlers/utils/draft.js.map +1 -0
- package/dist/cjs/next/api-handler/handlers/webhook/index.js +3 -3
- package/dist/cjs/next/api-handler/handlers/webhook/index.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/webhook/site-published.js +8 -5
- package/dist/cjs/next/api-handler/handlers/webhook/site-published.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/webhook/types.js.map +1 -1
- package/dist/cjs/next/api-handler/index.js +24 -9
- package/dist/cjs/next/api-handler/index.js.map +1 -1
- package/dist/cjs/next/cache.js +29 -0
- package/dist/cjs/next/cache.js.map +1 -0
- package/dist/cjs/next/client.js +135 -60
- package/dist/cjs/next/client.js.map +1 -1
- package/dist/cjs/next/components/page.js +3 -2
- package/dist/cjs/next/components/page.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/color-control/fixtures.js +51 -0
- package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -0
- package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +91 -35
- package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js +91 -0
- package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
- package/dist/cjs/next/components/tests/controls/style-control/fixtures.js +60 -0
- package/dist/cjs/next/components/tests/controls/style-control/fixtures.js.map +1 -0
- package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js +20 -11
- package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
- package/dist/cjs/next/document.js +1 -3
- package/dist/cjs/next/document.js.map +1 -1
- package/dist/cjs/next/draft-mode/index.js +3 -3
- package/dist/cjs/next/draft-mode/index.js.map +1 -1
- package/dist/cjs/next/hooks/use-is-pages-router.js.map +1 -1
- package/dist/cjs/next/index.js +0 -3
- package/dist/cjs/next/index.js.map +1 -1
- package/dist/cjs/next/middleware/index.js +29 -0
- package/dist/cjs/next/middleware/index.js.map +1 -0
- package/dist/cjs/next/middleware/request-utils.js +49 -0
- package/dist/cjs/next/middleware/request-utils.js.map +1 -0
- package/dist/cjs/next/preview-mode.js +4 -110
- package/dist/cjs/next/preview-mode.js.map +1 -1
- package/dist/cjs/next/root-style-registry.js +24 -20
- package/dist/cjs/next/root-style-registry.js.map +1 -1
- package/dist/cjs/next/server.js +0 -3
- package/dist/cjs/next/server.js.map +1 -1
- package/dist/cjs/next/tests/test-utils.js +61 -0
- package/dist/cjs/next/tests/test-utils.js.map +1 -0
- package/dist/cjs/runtimes/react/components/Document.js +1 -1
- package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
- package/dist/cjs/runtimes/react/components/ElementData.js +1 -0
- package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js +14 -3
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js +72 -0
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js +79 -0
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +67 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js +45 -0
- package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
- package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +1 -1
- package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
- package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-document-context.js +8 -13
- package/dist/cjs/runtimes/react/hooks/use-document-context.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-register-document.js +8 -1
- package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js +68 -0
- package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
- package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +6 -5
- package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-resolved-value.js +1 -1
- package/dist/cjs/runtimes/react/hooks/use-resolved-value.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +2 -1
- package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +1 -2
- package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
- package/dist/cjs/runtimes/react/host-api-client.js +5 -1
- package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
- package/dist/cjs/{utils/tests/breakpoint-test-util.js → runtimes/react/testing/breakpoints.js} +4 -4
- package/dist/cjs/runtimes/react/testing/breakpoints.js.map +1 -0
- package/dist/cjs/{utils/tests/element-data-test-test.js → runtimes/react/testing/element-data.js} +33 -7
- package/dist/cjs/runtimes/react/testing/element-data.js.map +1 -0
- package/dist/cjs/runtimes/react/testing/index.js +27 -0
- package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
- package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
- package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
- package/dist/cjs/runtimes/react/use-style.js +2 -2
- package/dist/cjs/runtimes/react/use-style.js.map +1 -1
- package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js +1 -2
- package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
- package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js +2 -2
- package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
- package/dist/cjs/slate/selectors.js +2 -3
- package/dist/cjs/slate/selectors.js.map +1 -1
- package/dist/cjs/state/makeswift-api-client.js +23 -12
- package/dist/cjs/state/makeswift-api-client.js.map +1 -1
- package/dist/cjs/state/modules/breakpoints.js +1 -44
- package/dist/cjs/state/modules/breakpoints.js.map +1 -1
- package/dist/cjs/state/modules/element-trees.js +10 -7
- package/dist/cjs/state/modules/element-trees.js.map +1 -1
- package/dist/esm/api/react.js +28 -7
- package/dist/esm/api/react.js.map +1 -1
- package/dist/esm/api/site-version.js +10 -0
- package/dist/esm/api/site-version.js.map +1 -0
- package/dist/esm/components/builtin/Box/register.js +1 -1
- package/dist/esm/components/builtin/Box/register.js.map +1 -1
- package/dist/esm/components/builtin/Button/register.js +1 -1
- package/dist/esm/components/builtin/Button/register.js.map +1 -1
- package/dist/esm/components/builtin/Carousel/Carousel.js +5 -4
- package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/builtin/Carousel/register.js +1 -1
- package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
- package/dist/esm/components/builtin/Countdown/register.js +1 -1
- package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
- package/dist/esm/components/builtin/Form/register.js +1 -1
- package/dist/esm/components/builtin/Form/register.js.map +1 -1
- package/dist/esm/components/builtin/Image/Image.js +1 -1
- package/dist/esm/components/builtin/Image/Image.js.map +1 -1
- package/dist/esm/components/builtin/Navigation/register.js +1 -1
- package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
- package/dist/esm/components/builtin/SocialLinks/register.js +1 -1
- package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
- package/dist/esm/components/builtin/Text/register.js +1 -1
- package/dist/esm/components/builtin/Text/register.js.map +1 -1
- package/dist/esm/components/hooks/useMediaQuery.js +1 -1
- package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
- package/dist/esm/components/page/Page.js +5 -2
- package/dist/esm/components/page/Page.js.map +1 -1
- package/dist/esm/components/page/PageHead.js +17 -8
- package/dist/esm/components/page/PageHead.js.map +1 -1
- package/dist/esm/components/page/page-seo-settings.js +19 -0
- package/dist/esm/components/page/page-seo-settings.js.map +1 -0
- package/dist/esm/components/shared/Link/index.js +3 -1
- package/dist/esm/components/shared/Link/index.js.map +1 -1
- package/dist/esm/components/utils/responsive-style.js +3 -2
- package/dist/esm/components/utils/responsive-style.js.map +1 -1
- package/dist/esm/core/index.js +18 -2
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/jest-setup.js +4 -1
- package/dist/esm/jest-setup.js.map +1 -1
- package/dist/esm/locale.js +79 -0
- package/dist/esm/locale.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/clear-draft.js +50 -0
- package/dist/esm/next/api-handler/handlers/clear-draft.js.map +1 -0
- package/dist/esm/next/api-handler/handlers/manifest.js +3 -2
- package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/redirect-draft.js +63 -0
- package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +1 -0
- package/dist/esm/next/api-handler/handlers/redirect-preview.js +53 -0
- package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +1 -0
- package/dist/esm/next/api-handler/handlers/utils/draft.js +24 -0
- package/dist/esm/next/api-handler/handlers/utils/draft.js.map +1 -0
- package/dist/esm/next/api-handler/handlers/webhook/index.js +3 -3
- package/dist/esm/next/api-handler/handlers/webhook/index.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/webhook/site-published.js +7 -3
- package/dist/esm/next/api-handler/handlers/webhook/site-published.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/webhook/types.js.map +1 -1
- package/dist/esm/next/api-handler/index.js +28 -9
- package/dist/esm/next/api-handler/index.js.map +1 -1
- package/dist/esm/next/cache.js +5 -0
- package/dist/esm/next/cache.js.map +1 -0
- package/dist/esm/next/client.js +128 -54
- package/dist/esm/next/client.js.map +1 -1
- package/dist/esm/next/components/page.js +3 -2
- package/dist/esm/next/components/page.js.map +1 -1
- package/dist/esm/next/components/tests/controls/color-control/fixtures.js +24 -0
- package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -0
- package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +82 -39
- package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js +56 -0
- package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
- package/dist/esm/next/components/tests/controls/style-control/fixtures.js +35 -0
- package/dist/esm/next/components/tests/controls/style-control/fixtures.js.map +1 -0
- package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js +7 -11
- package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
- package/dist/esm/next/document.js +1 -3
- package/dist/esm/next/document.js.map +1 -1
- package/dist/esm/next/draft-mode/index.js +1 -1
- package/dist/esm/next/draft-mode/index.js.map +1 -1
- package/dist/esm/next/hooks/use-is-pages-router.js.map +1 -1
- package/dist/esm/next/index.js +0 -2
- package/dist/esm/next/index.js.map +1 -1
- package/dist/esm/next/middleware/index.js +5 -0
- package/dist/esm/next/middleware/index.js.map +1 -0
- package/dist/esm/next/middleware/request-utils.js +28 -0
- package/dist/esm/next/middleware/request-utils.js.map +1 -0
- package/dist/esm/next/preview-mode.js +2 -105
- package/dist/esm/next/preview-mode.js.map +1 -1
- package/dist/esm/next/root-style-registry.js +24 -20
- package/dist/esm/next/root-style-registry.js.map +1 -1
- package/dist/esm/next/server.js +0 -2
- package/dist/esm/next/server.js.map +1 -1
- package/dist/esm/next/tests/test-utils.js +37 -0
- package/dist/esm/next/tests/test-utils.js.map +1 -0
- package/dist/esm/runtimes/react/components/Document.js +2 -2
- package/dist/esm/runtimes/react/components/Document.js.map +1 -1
- package/dist/esm/runtimes/react/components/ElementData.js +1 -0
- package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
- package/dist/esm/runtimes/react/components/RuntimeProvider.js +15 -4
- package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js +48 -0
- package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
- package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js +55 -0
- package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +43 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js +21 -0
- package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
- package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +2 -2
- package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-cache-data.js +2 -2
- package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-document-context.js +6 -11
- package/dist/esm/runtimes/react/hooks/use-document-context.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-register-document.js +9 -2
- package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-resolvable-record.js +44 -0
- package/dist/esm/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
- package/dist/esm/runtimes/react/hooks/use-resolved-props.js +6 -5
- package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-resolved-value.js +1 -1
- package/dist/esm/runtimes/react/hooks/use-resolved-value.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +3 -2
- package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +2 -2
- package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
- package/dist/esm/runtimes/react/host-api-client.js +5 -1
- package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
- package/dist/esm/{utils/tests/breakpoint-test-util.js → runtimes/react/testing/breakpoints.js} +1 -1
- package/dist/esm/runtimes/react/testing/breakpoints.js.map +1 -0
- package/dist/esm/{utils/tests/element-data-test-test.js → runtimes/react/testing/element-data.js} +29 -4
- package/dist/esm/runtimes/react/testing/element-data.js.map +1 -0
- package/dist/esm/runtimes/react/testing/index.js +4 -0
- package/dist/esm/runtimes/react/testing/index.js.map +1 -0
- package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
- package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
- package/dist/esm/runtimes/react/use-style.js +2 -2
- package/dist/esm/runtimes/react/use-style.js.map +1 -1
- package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js +4 -2
- package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
- package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js +3 -1
- package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
- package/dist/esm/slate/selectors.js +4 -2
- package/dist/esm/slate/selectors.js.map +1 -1
- package/dist/esm/state/makeswift-api-client.js +22 -11
- package/dist/esm/state/makeswift-api-client.js.map +1 -1
- package/dist/esm/state/modules/breakpoints.js +1 -42
- package/dist/esm/state/modules/breakpoints.js.map +1 -1
- package/dist/esm/state/modules/element-trees.js +10 -7
- package/dist/esm/state/modules/element-trees.js.map +1 -1
- package/dist/types/api/react.d.ts +4 -1
- package/dist/types/api/react.d.ts.map +1 -1
- package/dist/types/api/site-version.d.ts +6 -0
- package/dist/types/api/site-version.d.ts.map +1 -0
- package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
- package/dist/types/components/hooks/useMediaQuery.d.ts +1 -1
- package/dist/types/components/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/types/components/page/Page.d.ts +3 -1
- package/dist/types/components/page/Page.d.ts.map +1 -1
- package/dist/types/components/page/PageHead.d.ts +3 -1
- package/dist/types/components/page/PageHead.d.ts.map +1 -1
- package/dist/types/components/page/page-seo-settings.d.ts +11 -0
- package/dist/types/components/page/page-seo-settings.d.ts.map +1 -0
- package/dist/types/components/shared/Link/index.d.ts.map +1 -1
- package/dist/types/components/utils/responsive-style.d.ts +1 -1
- package/dist/types/components/utils/responsive-style.d.ts.map +1 -1
- package/dist/types/controls/link.d.ts +1 -1
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/index.d.ts.map +1 -1
- package/dist/types/locale.d.ts +3 -3
- package/dist/types/locale.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/clear-draft.d.ts +20 -0
- package/dist/types/next/api-handler/handlers/clear-draft.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/manifest.d.ts +1 -0
- package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +18 -0
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +18 -0
- package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/utils/draft.d.ts +16 -0
- package/dist/types/next/api-handler/handlers/utils/draft.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/webhook/index.d.ts +9 -11
- package/dist/types/next/api-handler/handlers/webhook/index.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts +6 -3
- package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/webhook/types.d.ts +13 -12
- package/dist/types/next/api-handler/handlers/webhook/types.d.ts.map +1 -1
- package/dist/types/next/api-handler/index.d.ts +10 -5
- package/dist/types/next/api-handler/index.d.ts.map +1 -1
- package/dist/types/next/cache.d.ts +2 -0
- package/dist/types/next/cache.d.ts.map +1 -0
- package/dist/types/next/client.d.ts +14 -12
- package/dist/types/next/client.d.ts.map +1 -1
- package/dist/types/next/components/page.d.ts +21 -1
- package/dist/types/next/components/page.d.ts.map +1 -1
- package/dist/types/next/components/tests/controls/color-control/client.test.d.ts +3 -0
- package/dist/types/next/components/tests/controls/color-control/client.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +11 -0
- package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/color-control/server.test.d.ts +2 -0
- package/dist/types/next/components/tests/controls/color-control/server.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +2 -3
- package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
- package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts +2 -0
- package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +42 -0
- package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts +2 -0
- package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/style-control/client.test.d.ts +2 -0
- package/dist/types/next/components/tests/controls/style-control/client.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts +6 -0
- package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts.map +1 -0
- package/dist/types/next/components/tests/controls/style-control/server.test.d.ts +2 -0
- package/dist/types/next/components/tests/controls/style-control/server.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts +3 -0
- package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts.map +1 -0
- package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
- package/dist/types/next/document.d.ts +1 -5
- package/dist/types/next/document.d.ts.map +1 -1
- package/dist/types/next/draft-mode/index.d.ts +2 -2
- package/dist/types/next/hooks/use-is-pages-router.d.ts.map +1 -1
- package/dist/types/next/index.d.ts +0 -1
- package/dist/types/next/index.d.ts.map +1 -1
- package/dist/types/next/middleware/index.d.ts +2 -0
- package/dist/types/next/middleware/index.d.ts.map +1 -0
- package/dist/types/next/middleware/request-utils.d.ts +3 -0
- package/dist/types/next/middleware/request-utils.d.ts.map +1 -0
- package/dist/types/next/middleware/request-utils.test.d.ts +2 -0
- package/dist/types/next/middleware/request-utils.test.d.ts.map +1 -0
- package/dist/types/next/preview-mode.d.ts +3 -10
- package/dist/types/next/preview-mode.d.ts.map +1 -1
- package/dist/types/next/root-style-registry.d.ts +2 -1
- package/dist/types/next/root-style-registry.d.ts.map +1 -1
- package/dist/types/next/server.d.ts +0 -1
- package/dist/types/next/server.d.ts.map +1 -1
- package/dist/types/next/tests/client.error-handling.test.d.ts +2 -0
- package/dist/types/next/tests/client.error-handling.test.d.ts.map +1 -0
- package/dist/types/next/tests/client.get-page-snapshot.test.d.ts +2 -0
- package/dist/types/next/tests/client.get-page-snapshot.test.d.ts.map +1 -0
- package/dist/types/next/tests/client.get-resources.test.d.ts +2 -0
- package/dist/types/next/tests/client.get-resources.test.d.ts.map +1 -0
- package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts +2 -0
- package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts.map +1 -0
- package/dist/types/next/tests/test-utils.d.ts +8 -0
- package/dist/types/next/tests/test-utils.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +2 -1
- package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +4 -0
- package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +6 -0
- package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +4 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts +4 -0
- package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts.map +1 -0
- package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-document-context.d.ts +2 -7
- package/dist/types/runtimes/react/hooks/use-document-context.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts +3 -0
- package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts.map +1 -0
- package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-resource-resolver.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
- package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
- package/dist/types/{utils/tests/breakpoint-test-util.d.ts → runtimes/react/testing/breakpoints.d.ts} +1 -1
- package/dist/types/runtimes/react/testing/breakpoints.d.ts.map +1 -0
- package/dist/types/{utils/tests/element-data-test-test.d.ts → runtimes/react/testing/element-data.d.ts} +7 -3
- package/dist/types/runtimes/react/testing/element-data.d.ts.map +1 -0
- package/dist/types/runtimes/react/testing/index.d.ts +4 -0
- package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
- package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
- package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
- package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts +1 -1
- package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts.map +1 -1
- package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts +1 -1
- package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
- package/dist/types/slate/selectors.d.ts +1 -2
- package/dist/types/slate/selectors.d.ts.map +1 -1
- package/dist/types/state/makeswift-api-client.d.ts +2 -1
- package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
- package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts +7 -0
- package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts.map +1 -0
- package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +239 -0
- package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
- package/dist/types/state/modules/breakpoints.d.ts +2 -7
- package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
- package/dist/types/state/modules/element-trees.d.ts +1 -1
- package/dist/types/state/modules/element-trees.d.ts.map +1 -1
- package/package.json +17 -5
- package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +0 -80
- package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
- package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +0 -100
- package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
- package/dist/cjs/next/draft-mode/draft-mode-script.js +0 -137
- package/dist/cjs/next/draft-mode/draft-mode-script.js.map +0 -1
- package/dist/cjs/runtimes/react/resolvable-record.js +0 -67
- package/dist/cjs/runtimes/react/resolvable-record.js.map +0 -1
- package/dist/cjs/utils/tests/breakpoint-test-util.js.map +0 -1
- package/dist/cjs/utils/tests/element-data-test-test.js.map +0 -1
- package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +0 -60
- package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
- package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +0 -80
- package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
- package/dist/esm/next/draft-mode/draft-mode-script.js +0 -103
- package/dist/esm/next/draft-mode/draft-mode-script.js.map +0 -1
- package/dist/esm/runtimes/react/resolvable-record.js +0 -43
- package/dist/esm/runtimes/react/resolvable-record.js.map +0 -1
- package/dist/esm/utils/tests/breakpoint-test-util.js.map +0 -1
- package/dist/esm/utils/tests/element-data-test-test.js.map +0 -1
- package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts +0 -20
- package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts.map +0 -1
- package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts +0 -2
- package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts.map +0 -1
- package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts +0 -20
- package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +0 -1
- package/dist/types/next/components/tests/controls/color-control.test.d.ts +0 -3
- package/dist/types/next/components/tests/controls/color-control.test.d.ts.map +0 -1
- package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts +0 -2
- package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts.map +0 -1
- package/dist/types/next/components/tests/controls/style-control.test.d.ts +0 -2
- package/dist/types/next/components/tests/controls/style-control.test.d.ts.map +0 -1
- package/dist/types/next/draft-mode/draft-mode-script.d.ts +0 -6
- package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +0 -1
- package/dist/types/runtimes/react/resolvable-record.d.ts +0 -3
- package/dist/types/runtimes/react/resolvable-record.d.ts.map +0 -1
- package/dist/types/utils/tests/breakpoint-test-util.d.ts.map +0 -1
- package/dist/types/utils/tests/element-data-test-test.d.ts.map +0 -1
package/dist/esm/next/client.js
CHANGED
|
@@ -17,12 +17,13 @@ import {
|
|
|
17
17
|
getPropControllerDescriptors,
|
|
18
18
|
isElementReference
|
|
19
19
|
} from "../state/react-page";
|
|
20
|
-
import { getMakeswiftSiteVersion
|
|
20
|
+
import { getMakeswiftSiteVersion } from "./preview-mode";
|
|
21
|
+
import { MakeswiftSiteVersion } from "../api/site-version";
|
|
21
22
|
import { toIterablePaginationResult } from "./utils/pagination";
|
|
22
23
|
import { deterministicUUID } from "../utils/deterministic-uuid";
|
|
23
24
|
import { Schema } from "@makeswift/controls";
|
|
24
25
|
import { EMBEDDED_DOCUMENT_TYPE } from "../state/modules/read-only-documents";
|
|
25
|
-
import { MAKESWIFT_CACHE_TAG } from "./
|
|
26
|
+
import { MAKESWIFT_CACHE_TAG } from "./cache";
|
|
26
27
|
const makeswiftPageResultSchema = z.object({
|
|
27
28
|
id: z.string(),
|
|
28
29
|
path: z.string(),
|
|
@@ -134,6 +135,21 @@ function componentDocumentToRootEmbeddedDocument({
|
|
|
134
135
|
};
|
|
135
136
|
return rootDocument;
|
|
136
137
|
}
|
|
138
|
+
async function failedResponseBody(response) {
|
|
139
|
+
try {
|
|
140
|
+
const text = await response.text();
|
|
141
|
+
try {
|
|
142
|
+
return JSON.parse(text);
|
|
143
|
+
} catch {
|
|
144
|
+
return text;
|
|
145
|
+
}
|
|
146
|
+
} catch (e) {
|
|
147
|
+
return `Failed to extract response body: ${e}`;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function responseError(response) {
|
|
151
|
+
return `${response.status} ${response.statusText}`;
|
|
152
|
+
}
|
|
137
153
|
const pagePathnameSlicesAPISchema = z.array(
|
|
138
154
|
z.object({
|
|
139
155
|
id: z.string(),
|
|
@@ -206,14 +222,18 @@ Received "${apiKey}" instead.`
|
|
|
206
222
|
const queryParams = getPagesQueryParams(params);
|
|
207
223
|
const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion);
|
|
208
224
|
if (!response.ok) {
|
|
209
|
-
console.error("Failed to get pages",
|
|
210
|
-
|
|
225
|
+
console.error("Failed to get pages", {
|
|
226
|
+
response: await failedResponseBody(response),
|
|
227
|
+
siteVersion,
|
|
228
|
+
params
|
|
229
|
+
});
|
|
230
|
+
throw new Error(`Failed to get pages: ${responseError(response)}`);
|
|
211
231
|
}
|
|
212
232
|
const result = await response.json();
|
|
213
233
|
const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result);
|
|
214
234
|
if (!parsedResponse.success) {
|
|
215
235
|
throw new Error(
|
|
216
|
-
`Failed to parse getPages response: ${parsedResponse.error.errors.join("
|
|
236
|
+
`Failed to parse 'getPages' response: ${parsedResponse.error.errors.map((e) => e.message).join("; ")}`
|
|
217
237
|
);
|
|
218
238
|
}
|
|
219
239
|
return parsedResponse.data;
|
|
@@ -221,17 +241,21 @@ Received "${apiKey}" instead.`
|
|
|
221
241
|
getPages = toIterablePaginationResult(this.getPagesInternal);
|
|
222
242
|
async getPage(pathname, {
|
|
223
243
|
siteVersion = MakeswiftSiteVersion.Live,
|
|
224
|
-
locale
|
|
244
|
+
locale
|
|
225
245
|
} = {}) {
|
|
226
246
|
const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
|
|
227
|
-
if (
|
|
228
|
-
url.searchParams.set("locale",
|
|
247
|
+
if (locale)
|
|
248
|
+
url.searchParams.set("locale", locale);
|
|
229
249
|
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
230
250
|
if (!response.ok) {
|
|
231
251
|
if (response.status === 404)
|
|
232
252
|
return null;
|
|
233
|
-
console.error(
|
|
234
|
-
|
|
253
|
+
console.error(`Failed to get page snapshot for '${pathname}'`, {
|
|
254
|
+
response: await failedResponseBody(response),
|
|
255
|
+
siteVersion,
|
|
256
|
+
locale
|
|
257
|
+
});
|
|
258
|
+
throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`);
|
|
235
259
|
}
|
|
236
260
|
const json = await response.json();
|
|
237
261
|
return getPageAPISchema.parse(json);
|
|
@@ -245,7 +269,10 @@ Received "${apiKey}" instead.`
|
|
|
245
269
|
});
|
|
246
270
|
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
247
271
|
if (!response.ok) {
|
|
248
|
-
console.error(
|
|
272
|
+
console.error(`Failed to get typographies for [${typographyIds.join(", ")}]`, {
|
|
273
|
+
response: await failedResponseBody(response),
|
|
274
|
+
siteVersion
|
|
275
|
+
});
|
|
249
276
|
return [];
|
|
250
277
|
}
|
|
251
278
|
const body = await response.json();
|
|
@@ -260,7 +287,10 @@ Received "${apiKey}" instead.`
|
|
|
260
287
|
});
|
|
261
288
|
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
262
289
|
if (!response.ok) {
|
|
263
|
-
console.error(
|
|
290
|
+
console.error(`Failed to get swatches for ${ids.join(", ")}`, {
|
|
291
|
+
response: await failedResponseBody(response),
|
|
292
|
+
siteVersion
|
|
293
|
+
});
|
|
264
294
|
return [];
|
|
265
295
|
}
|
|
266
296
|
return await response.json();
|
|
@@ -395,29 +425,42 @@ Received "${apiKey}" instead.`
|
|
|
395
425
|
}
|
|
396
426
|
async getPageSnapshot(pathname, {
|
|
397
427
|
siteVersion: siteVersionPromise,
|
|
398
|
-
locale
|
|
428
|
+
locale,
|
|
429
|
+
allowLocaleFallback = true
|
|
399
430
|
}) {
|
|
400
|
-
const
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
431
|
+
const queryParams = () => {
|
|
432
|
+
const params = new URLSearchParams();
|
|
433
|
+
if (locale)
|
|
434
|
+
params.set("locale", locale);
|
|
435
|
+
if (allowLocaleFallback != null)
|
|
436
|
+
params.set("allowLocaleFallback", `${allowLocaleFallback}`);
|
|
437
|
+
return params.toString();
|
|
438
|
+
};
|
|
404
439
|
const siteVersion = await siteVersionPromise;
|
|
405
440
|
const response = await this.fetch(
|
|
406
|
-
`v3/pages/${encodeURIComponent(pathname)}/document?${
|
|
441
|
+
`v3/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,
|
|
407
442
|
siteVersion
|
|
408
443
|
);
|
|
409
444
|
if (!response.ok) {
|
|
410
445
|
if (response.status === 404)
|
|
411
446
|
return null;
|
|
412
|
-
console.error(
|
|
413
|
-
|
|
447
|
+
console.error(`Failed to get page snapshot for '${pathname}'`, {
|
|
448
|
+
response: await failedResponseBody(response),
|
|
449
|
+
siteVersion,
|
|
450
|
+
locale
|
|
451
|
+
});
|
|
452
|
+
throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`);
|
|
414
453
|
}
|
|
415
454
|
const document = await response.json();
|
|
416
455
|
const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null);
|
|
417
456
|
const cacheData = await this.introspect(
|
|
418
457
|
baseLocalizedPage?.data ?? document.data,
|
|
419
458
|
siteVersion,
|
|
420
|
-
|
|
459
|
+
// The /v3/pages endpoint returns null for document.locale when the requested locale is the default.
|
|
460
|
+
// This legacy behavior is set to change with the upcoming /v4/pages endpoint.
|
|
461
|
+
// We rely on document.locale when reading from the API cache, so ensure the cache is built during
|
|
462
|
+
// introspection using the same value.
|
|
463
|
+
document.locale
|
|
421
464
|
);
|
|
422
465
|
return {
|
|
423
466
|
document,
|
|
@@ -438,36 +481,39 @@ Received "${apiKey}" instead.`
|
|
|
438
481
|
const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback;
|
|
439
482
|
let response;
|
|
440
483
|
const responseForRequestedLocale = await this.fetch(
|
|
441
|
-
`v1/element-trees/${id}?${searchParams.toString()}`,
|
|
484
|
+
`v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,
|
|
442
485
|
siteVersion
|
|
443
486
|
);
|
|
444
487
|
if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {
|
|
445
|
-
response = await this.fetch(`v1/element-trees/${id}`, siteVersion);
|
|
488
|
+
response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion);
|
|
446
489
|
} else {
|
|
447
490
|
response = responseForRequestedLocale;
|
|
448
491
|
}
|
|
449
|
-
if (response.status === 404) {
|
|
450
|
-
return {
|
|
451
|
-
document: {
|
|
452
|
-
id,
|
|
453
|
-
locale: locale ?? null,
|
|
454
|
-
data: null
|
|
455
|
-
},
|
|
456
|
-
key,
|
|
457
|
-
cacheData: CacheData.empty(),
|
|
458
|
-
meta: {
|
|
459
|
-
allowLocaleFallback,
|
|
460
|
-
requestedLocale: locale ?? null
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
const json = await response.json();
|
|
465
492
|
if (!response.ok) {
|
|
466
|
-
|
|
467
|
-
|
|
493
|
+
if (response.status === 404) {
|
|
494
|
+
return {
|
|
495
|
+
document: {
|
|
496
|
+
id,
|
|
497
|
+
locale: locale ?? null,
|
|
498
|
+
data: null
|
|
499
|
+
},
|
|
500
|
+
key,
|
|
501
|
+
cacheData: CacheData.empty(),
|
|
502
|
+
meta: {
|
|
503
|
+
allowLocaleFallback,
|
|
504
|
+
requestedLocale: locale ?? null
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
console.error(`Failed to get component snapshot for '${id}':`, {
|
|
509
|
+
response: await failedResponseBody(response),
|
|
510
|
+
siteVersion,
|
|
511
|
+
locale
|
|
512
|
+
});
|
|
513
|
+
throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`);
|
|
468
514
|
}
|
|
469
|
-
const document = makeswiftComponentDocumentSchema.parse(json);
|
|
470
|
-
const cacheData = await this.introspect(document.data, siteVersion, locale);
|
|
515
|
+
const document = makeswiftComponentDocumentSchema.parse(await response.json());
|
|
516
|
+
const cacheData = await this.introspect(document.data, siteVersion, locale ?? null);
|
|
471
517
|
return {
|
|
472
518
|
document,
|
|
473
519
|
cacheData,
|
|
@@ -481,8 +527,12 @@ Received "${apiKey}" instead.`
|
|
|
481
527
|
async getSwatch(swatchId, siteVersion) {
|
|
482
528
|
const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion);
|
|
483
529
|
if (!response.ok) {
|
|
484
|
-
if (response.status !== 404)
|
|
485
|
-
console.error(
|
|
530
|
+
if (response.status !== 404) {
|
|
531
|
+
console.error(`Failed to get swatch '${swatchId}'`, {
|
|
532
|
+
response: await failedResponseBody(response),
|
|
533
|
+
siteVersion
|
|
534
|
+
});
|
|
535
|
+
}
|
|
486
536
|
return null;
|
|
487
537
|
}
|
|
488
538
|
const swatch = await response.json();
|
|
@@ -498,8 +548,12 @@ Received "${apiKey}" instead.`
|
|
|
498
548
|
async getTypography(typographyId, siteVersion) {
|
|
499
549
|
const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion);
|
|
500
550
|
if (!response.ok) {
|
|
501
|
-
if (response.status !== 404)
|
|
502
|
-
console.error(
|
|
551
|
+
if (response.status !== 404) {
|
|
552
|
+
console.error(`Failed to get typography '${typographyId}'`, {
|
|
553
|
+
response: await failedResponseBody(response),
|
|
554
|
+
siteVersion
|
|
555
|
+
});
|
|
556
|
+
}
|
|
503
557
|
return null;
|
|
504
558
|
}
|
|
505
559
|
const typography = await response.json();
|
|
@@ -508,8 +562,12 @@ Received "${apiKey}" instead.`
|
|
|
508
562
|
async getGlobalElement(globalElementId, siteVersion) {
|
|
509
563
|
const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion);
|
|
510
564
|
if (!response.ok) {
|
|
511
|
-
if (response.status !== 404)
|
|
512
|
-
console.error(
|
|
565
|
+
if (response.status !== 404) {
|
|
566
|
+
console.error(`Failed to get global element '${globalElementId}'`, {
|
|
567
|
+
response: await failedResponseBody(response),
|
|
568
|
+
siteVersion
|
|
569
|
+
});
|
|
570
|
+
}
|
|
513
571
|
return null;
|
|
514
572
|
}
|
|
515
573
|
const globalElement = await response.json();
|
|
@@ -521,8 +579,13 @@ Received "${apiKey}" instead.`
|
|
|
521
579
|
siteVersion
|
|
522
580
|
);
|
|
523
581
|
if (!response.ok) {
|
|
524
|
-
if (response.status !== 404)
|
|
525
|
-
console.error(
|
|
582
|
+
if (response.status !== 404) {
|
|
583
|
+
console.error(`Failed to get localized global element '${globalElementId}'`, {
|
|
584
|
+
response: await failedResponseBody(response),
|
|
585
|
+
siteVersion,
|
|
586
|
+
locale
|
|
587
|
+
});
|
|
588
|
+
}
|
|
526
589
|
return null;
|
|
527
590
|
}
|
|
528
591
|
const localizedGlobalElement = await response.json();
|
|
@@ -537,7 +600,11 @@ Received "${apiKey}" instead.`
|
|
|
537
600
|
url.searchParams.set("locale", locale);
|
|
538
601
|
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
539
602
|
if (!response.ok) {
|
|
540
|
-
console.error(
|
|
603
|
+
console.error(`Failed to get page pathname slice(s) for ${pageIds.join(", ")}`, {
|
|
604
|
+
response: await failedResponseBody(response),
|
|
605
|
+
siteVersion,
|
|
606
|
+
locale
|
|
607
|
+
});
|
|
541
608
|
return [];
|
|
542
609
|
}
|
|
543
610
|
const json = await response.json();
|
|
@@ -583,8 +650,14 @@ Received "${apiKey}" instead.`
|
|
|
583
650
|
url.searchParams.set("locale", locale);
|
|
584
651
|
const response = await this.fetch(url.pathname + url.search);
|
|
585
652
|
if (!response.ok) {
|
|
586
|
-
console.error("Failed to get sitemap",
|
|
587
|
-
|
|
653
|
+
console.error("Failed to get sitemap ", {
|
|
654
|
+
response: await failedResponseBody(response),
|
|
655
|
+
limit,
|
|
656
|
+
after,
|
|
657
|
+
pathnamePrefix,
|
|
658
|
+
locale
|
|
659
|
+
});
|
|
660
|
+
throw new Error(`Failed to get sitemap with error: ${responseError(response)}`);
|
|
588
661
|
}
|
|
589
662
|
const sitemap = await response.json();
|
|
590
663
|
return sitemap;
|
|
@@ -599,6 +672,7 @@ Received "${apiKey}" instead.`
|
|
|
599
672
|
export {
|
|
600
673
|
Makeswift,
|
|
601
674
|
componentDocumentToRootEmbeddedDocument,
|
|
675
|
+
failedResponseBody,
|
|
602
676
|
pageToRootDocument
|
|
603
677
|
};
|
|
604
678
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/next/client.ts"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\nimport { toIterablePaginationResult } from './utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\nimport { MAKESWIFT_CACHE_TAG } from './api-handler/handlers/webhook/site-published'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta,\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n localizedPathname: z.string().optional(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n static getPreviewMode(previewData: PreviewData): boolean {\n return getMakeswiftSiteVersion(previewData) === MakeswiftSiteVersion.Working\n }\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(\n path: string,\n siteVersion: MakeswiftSiteVersion = MakeswiftSiteVersion.Live,\n init?: RequestInit,\n ): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': siteVersion,\n ...init?.headers,\n },\n ...(siteVersion === MakeswiftSiteVersion.Working ? { cache: 'no-store' } : {}),\n next: {\n ...init?.next,\n tags: [...(init?.next?.tags ?? []), MAKESWIFT_CACHE_TAG],\n },\n })\n\n return response\n }\n\n private getPagesInternal = async ({\n siteVersion = MakeswiftSiteVersion.Live,\n ...params\n }: {\n siteVersion?: MakeswiftSiteVersion\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', await response.json())\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse getPages response: ${parsedResponse.error.errors.join(', ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n {\n siteVersion = MakeswiftSiteVersion.Live,\n locale: localeInput,\n }: { siteVersion?: MakeswiftSiteVersion; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (localeInput) url.searchParams.set('locale', localeInput)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v2/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get typographies', await response.json())\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v2/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get swatches', await response.json())\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: MakeswiftSiteVersion,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: MakeswiftSiteVersion,\n locale?: string,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale: localeInput,\n }: { siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v3/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n localeInput,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v1/element-trees/${id}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v1/element-trees/${id}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n const json = await response.json()\n if (!response.ok) {\n console.error('Failed to get page snapshot', json)\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(json)\n const cacheData = await this.introspect(document.data, siteVersion, locale)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: MakeswiftSiteVersion): Promise<Swatch | null> {\n const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get swatch', await response.json())\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get typography', await response.json())\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get global element', await response.json())\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v2/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get localized global element', await response.json())\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v2/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get page pathname slices', await response.json())\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n /**\n * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap\n * using data from `getPages` instead.\n */\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap', await response.json())\n throw new Error(`Failed to get sitemap with error: \"${response.statusText}\"`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n"],"mappings":"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","names":["getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/next/client.ts"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion } from './preview-mode'\nimport { MakeswiftSiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from './utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\nimport { MAKESWIFT_CACHE_TAG } from './cache'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta,\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n localizedPathname: z.string().optional(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n static getPreviewMode(previewData: PreviewData): boolean {\n return getMakeswiftSiteVersion(previewData) === MakeswiftSiteVersion.Working\n }\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(\n path: string,\n siteVersion: MakeswiftSiteVersion = MakeswiftSiteVersion.Live,\n init?: RequestInit,\n ): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': siteVersion,\n ...init?.headers,\n },\n ...(siteVersion === MakeswiftSiteVersion.Working ? { cache: 'no-store' } : {}),\n next: {\n ...init?.next,\n tags: [...(init?.next?.tags ?? []), MAKESWIFT_CACHE_TAG],\n },\n })\n\n return response\n }\n\n private getPagesInternal = async ({\n siteVersion = MakeswiftSiteVersion.Live,\n ...params\n }: {\n siteVersion?: MakeswiftSiteVersion\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n {\n siteVersion = MakeswiftSiteVersion.Live,\n locale,\n }: { siteVersion?: MakeswiftSiteVersion; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v2/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v2/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: MakeswiftSiteVersion,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: MakeswiftSiteVersion,\n locale: string | null,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v3/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: MakeswiftSiteVersion): Promise<Swatch | null> {\n const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v2/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v2/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n /**\n * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap\n * using data from `getPages` instead.\n */\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap ', {\n response: await failedResponseBody(response),\n limit,\n after,\n pathnamePrefix,\n locale,\n })\n\n throw new Error(`Failed to get sitemap with error: ${responseError(response)}`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n"],"mappings":"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","names":["getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
@@ -18,7 +18,7 @@ function useRegisterPageDocument(pageDocument) {
|
|
|
18
18
|
useUniversalDispatch(dispatch, registerDocumentsEffect, [rootDocuments]);
|
|
19
19
|
return rootDocuments[0];
|
|
20
20
|
}
|
|
21
|
-
const Page = memo(({ snapshot, ...props }) => {
|
|
21
|
+
const Page = memo(({ snapshot, metadata = true, ...props }) => {
|
|
22
22
|
if ("runtime" in props) {
|
|
23
23
|
throw new Error(
|
|
24
24
|
`The \`runtime\` prop is no longer supported in the \`@makeswift/runtime\` \`Page\` component as of \`0.15.0\`.
|
|
@@ -31,7 +31,8 @@ See our docs for more information on what's changed and instructions to migrate:
|
|
|
31
31
|
PageComponent,
|
|
32
32
|
{
|
|
33
33
|
page: snapshot.document,
|
|
34
|
-
rootDocument
|
|
34
|
+
rootDocument,
|
|
35
|
+
metadata
|
|
35
36
|
},
|
|
36
37
|
snapshot.document.data.key
|
|
37
38
|
) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/next/components/page.tsx"],"sourcesContent":["'use client'\n\nimport { Suspense, memo, useMemo } from 'react'\n\nimport { useDispatch } from '../../runtimes/react/hooks/use-dispatch'\nimport { useUniversalDispatch } from '../../runtimes/react/hooks/use-universal-dispatch'\nimport { useCacheData } from '../../runtimes/react/hooks/use-cache-data'\n\nimport { Page as PageComponent } from '../../components/page'\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n pageToRootDocument,\n} from '../client'\nimport * as ReactPage from '../../state/react-page'\nimport { registerDocumentsEffect } from '../../state/actions'\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nfunction useRegisterPageDocument(pageDocument: MakeswiftPageDocument): ReactPage.Document {\n const dispatch = useDispatch()\n const rootDocuments: [ReactPage.Document] = useMemo(\n () => [pageToRootDocument(pageDocument)],\n [pageDocument],\n )\n\n useUniversalDispatch(dispatch, registerDocumentsEffect, [rootDocuments])\n\n return rootDocuments[0]\n}\n\nexport const Page = memo(({ snapshot, ...props }: PageProps) => {\n if ('runtime' in props) {\n throw new Error(\n `The \\`runtime\\` prop is no longer supported in the \\`@makeswift/runtime\\` \\`Page\\` component as of \\`0.15.0\\`.\nSee our docs for more information on what's changed and instructions to migrate: https://docs.makeswift.com/migrations/0.15.0`,\n )\n }\n\n useCacheData(snapshot.cacheData)\n\n const rootDocument = useRegisterPageDocument(snapshot.document)\n\n return (\n <Suspense>\n {/* We use a key here to reset the Snippets state in the PageMeta component */}\n <PageComponent\n key={snapshot.document.data.key}\n page={snapshot.document}\n rootDocument={rootDocument}\n />\n </Suspense>\n )\n})\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../src/next/components/page.tsx"],"sourcesContent":["'use client'\n\nimport { Suspense, memo, useMemo } from 'react'\n\nimport { useDispatch } from '../../runtimes/react/hooks/use-dispatch'\nimport { useUniversalDispatch } from '../../runtimes/react/hooks/use-universal-dispatch'\nimport { useCacheData } from '../../runtimes/react/hooks/use-cache-data'\n\nimport { Page as PageComponent } from '../../components/page'\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n pageToRootDocument,\n} from '../client'\nimport * as ReactPage from '../../state/react-page'\nimport { registerDocumentsEffect } from '../../state/actions'\nimport { type PageMetadataSettings } from '../../components/page/page-seo-settings'\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n metadata?: boolean | PageMetadataSettings\n}\n\nfunction useRegisterPageDocument(pageDocument: MakeswiftPageDocument): ReactPage.Document {\n const dispatch = useDispatch()\n const rootDocuments: [ReactPage.Document] = useMemo(\n () => [pageToRootDocument(pageDocument)],\n [pageDocument],\n )\n\n useUniversalDispatch(dispatch, registerDocumentsEffect, [rootDocuments])\n\n return rootDocuments[0]\n}\n\n/**\n * @param snapshot - The snapshot of the page to render, from\n * `client.getPageSnapshot()`.\n * @param metadata - Allows control over whether to use data from Makeswift for\n * rendering metadata tags in the `<head>` of the page. Pass `true` (default if\n * not provided) to render all metadata tags, or `false` to not render any. For\n * more granular control, pass an object with boolean values for specific\n * metadata fields. Valid fields include:\n * - `title`\n * - `description`\n * - `keywords`\n * - `socialImage`\n * - `canonicalUrl`\n * - `indexingBlocked`\n * - `favicon`\n *\n * If a field is not provided, it will default to `false`.\n */\nexport const Page = memo(({ snapshot, metadata = true, ...props }: PageProps) => {\n if ('runtime' in props) {\n throw new Error(\n `The \\`runtime\\` prop is no longer supported in the \\`@makeswift/runtime\\` \\`Page\\` component as of \\`0.15.0\\`.\nSee our docs for more information on what's changed and instructions to migrate: https://docs.makeswift.com/migrations/0.15.0`,\n )\n }\n\n useCacheData(snapshot.cacheData)\n\n const rootDocument = useRegisterPageDocument(snapshot.document)\n\n return (\n <Suspense>\n {/* We use a key here to reset the Snippets state in the PageMeta component */}\n <PageComponent\n key={snapshot.document.data.key}\n page={snapshot.document}\n rootDocument={rootDocument}\n metadata={metadata}\n />\n </Suspense>\n )\n})\n"],"mappings":";AAoEM;AAlEN,SAAS,UAAU,MAAM,eAAe;AAExC,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,QAAQ,qBAAqB;AACtC;AAAA,EAGE;AAAA,OACK;AAEP,SAAS,+BAA+B;AAQxC,SAAS,wBAAwB,cAAyD;AACxF,QAAM,WAAW,YAAY;AAC7B,QAAM,gBAAsC;AAAA,IAC1C,MAAM,CAAC,mBAAmB,YAAY,CAAC;AAAA,IACvC,CAAC,YAAY;AAAA,EACf;AAEA,uBAAqB,UAAU,yBAAyB,CAAC,aAAa,CAAC;AAEvE,SAAO,cAAc,CAAC;AACxB;AAoBO,MAAM,OAAO,KAAK,CAAC,EAAE,UAAU,WAAW,MAAM,GAAG,MAAM,MAAiB;AAC/E,MAAI,aAAa,OAAO;AACtB,UAAM,IAAI;AAAA,MACR;AAAA;AAAA,IAEF;AAAA,EACF;AAEA,eAAa,SAAS,SAAS;AAE/B,QAAM,eAAe,wBAAwB,SAAS,QAAQ;AAE9D,SACE,oBAAC,YAEC;AAAA,IAAC;AAAA;AAAA,MAEC,MAAM,SAAS;AAAA,MACf;AAAA,MACA;AAAA;AAAA,IAHK,SAAS,SAAS,KAAK;AAAA,EAI9B,GACF;AAEJ,CAAC;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { APIResourceType } from "../../../../../api";
|
|
2
|
+
const swatchId = "[swatch-test-id]";
|
|
3
|
+
const swatch = {
|
|
4
|
+
__typename: APIResourceType.Swatch,
|
|
5
|
+
hue: 238,
|
|
6
|
+
saturation: 87,
|
|
7
|
+
lightness: 49
|
|
8
|
+
};
|
|
9
|
+
const value = {
|
|
10
|
+
swatchId,
|
|
11
|
+
alpha: 0.5
|
|
12
|
+
};
|
|
13
|
+
const cacheData = (swatch2) => ({
|
|
14
|
+
apiResources: {
|
|
15
|
+
Swatch: [{ id: swatchId, value: swatch2 == null ? null : { id: swatchId, ...swatch2 } }]
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export {
|
|
19
|
+
cacheData,
|
|
20
|
+
swatch,
|
|
21
|
+
swatchId,
|
|
22
|
+
value
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/next/components/tests/controls/color-control/fixtures.ts"],"sourcesContent":["import { type ValueType } from '@makeswift/controls'\nimport { ColorDefinition } from '@makeswift/controls'\n\nimport { APIResourceType, type Swatch } from '../../../../../api'\nimport { type CacheData } from '../../../../../api/react'\n\ntype SwatchData = Omit<Swatch, 'id'>\n\nexport const swatchId = '[swatch-test-id]'\nexport const swatch: SwatchData = {\n __typename: APIResourceType.Swatch,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nexport const value: ValueType<ColorDefinition> = {\n swatchId,\n alpha: 0.5,\n}\n\nexport const cacheData = (swatch: SwatchData | null): Partial<CacheData> => ({\n apiResources: {\n Swatch: [{ id: swatchId, value: swatch == null ? null : { id: swatchId, ...swatch } }],\n },\n})\n"],"mappings":"AAGA,SAAS,uBAAoC;AAKtC,MAAM,WAAW;AACjB,MAAM,SAAqB;AAAA,EAChC,YAAY,gBAAgB;AAAA,EAC5B,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEO,MAAM,QAAoC;AAAA,EAC/C;AAAA,EACA,OAAO;AACT;AAEO,MAAM,YAAY,CAACA,aAAmD;AAAA,EAC3E,cAAc;AAAA,IACZ,QAAQ,CAAC,EAAE,IAAI,UAAU,OAAOA,WAAU,OAAO,OAAO,EAAE,IAAI,UAAU,GAAGA,QAAO,EAAE,CAAC;AAAA,EACvF;AACF;","names":["swatch"]}
|