@makeswift/runtime 0.25.0-canary.13 → 0.25.0-canary.14
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/site-version/index.js +103 -0
- package/dist/cjs/api/site-version/index.js.map +1 -0
- package/dist/cjs/api-handler/handlers/manifest.js +2 -3
- package/dist/cjs/api-handler/handlers/manifest.js.map +1 -1
- package/dist/cjs/api-handler/handlers/{clear-draft.js → redirect-live.js} +19 -10
- package/dist/cjs/api-handler/handlers/redirect-live.js.map +1 -0
- package/dist/cjs/api-handler/index.js +6 -5
- package/dist/cjs/api-handler/index.js.map +1 -1
- package/dist/cjs/api-handler/request-response.js +9 -0
- package/dist/cjs/api-handler/request-response.js.map +1 -1
- package/dist/cjs/client/index.js +67 -59
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/components/builtin/Root/Root.js +4 -4
- package/dist/cjs/components/builtin/Root/Root.js.map +1 -1
- package/dist/cjs/components/builtin/Video/Video.js +3 -13
- package/dist/cjs/components/builtin/Video/Video.js.map +1 -1
- package/dist/cjs/components/hooks/useMediaQuery.js +1 -2
- package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
- package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +3 -13
- package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
- package/dist/cjs/components/shared/react-player.js +41 -0
- package/dist/cjs/components/shared/react-player.js.map +1 -0
- package/dist/cjs/next/api-handler/config/app-router.js +7 -9
- package/dist/cjs/next/api-handler/config/app-router.js.map +1 -1
- package/dist/cjs/next/api-handler/config/pages-router.js +7 -9
- package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
- package/dist/cjs/next/api-handler/handlers/{redirect-draft.js → app-router-redirect-preview.js} +30 -26
- package/dist/cjs/next/api-handler/handlers/app-router-redirect-preview.js.map +1 -0
- package/dist/cjs/next/api-handler/handlers/{redirect-preview.js → pages-router-redirect-preview.js} +29 -22
- package/dist/cjs/next/api-handler/handlers/pages-router-redirect-preview.js.map +1 -0
- package/dist/cjs/next/api-handler/index.js +1 -1
- package/dist/cjs/next/api-handler/index.js.map +1 -1
- package/dist/cjs/next/api-handler/{draft.js → preview.js} +14 -9
- package/dist/cjs/next/api-handler/preview.js.map +1 -0
- package/dist/cjs/next/{draft-mode/index.js → app-router-site-version.js} +11 -27
- package/dist/cjs/next/app-router-site-version.js.map +1 -0
- package/dist/cjs/next/client.js +9 -3
- package/dist/cjs/next/client.js.map +1 -1
- package/dist/cjs/next/components/framework-provider/index.js.map +1 -1
- package/dist/cjs/next/components/page.js +1 -1
- package/dist/cjs/next/components/page.js.map +1 -1
- package/dist/cjs/next/index.js.map +1 -1
- package/dist/cjs/next/middleware/request-utils.js +11 -17
- package/dist/cjs/next/middleware/request-utils.js.map +1 -1
- package/dist/cjs/next/root-style-registry.js +13 -20
- package/dist/cjs/next/root-style-registry.js.map +1 -1
- package/dist/cjs/next/server.js +2 -2
- package/dist/cjs/next/server.js.map +1 -1
- package/dist/cjs/next/testing/page-rendering.js +2 -2
- package/dist/cjs/next/testing/page-rendering.js.map +1 -1
- package/dist/cjs/next/testing/react-provider.js +2 -2
- package/dist/cjs/next/testing/react-provider.js.map +1 -1
- package/dist/cjs/next/tests/test-utils.js +6 -4
- package/dist/cjs/next/tests/test-utils.js.map +1 -1
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js +7 -9
- package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/cjs/runtimes/react/components/framework-context.js +1 -1
- package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
- package/dist/cjs/runtimes/react/components/page/index.js +18 -16
- package/dist/cjs/runtimes/react/components/page/index.js.map +1 -1
- package/dist/cjs/runtimes/react/components/{draft-switcher/draft-switcher.js → preview-switcher/preview-switcher.js} +12 -22
- package/dist/cjs/runtimes/react/components/preview-switcher/preview-switcher.js.map +1 -0
- package/dist/cjs/runtimes/react/components/{draft-switcher/draft-toolbar.js → preview-switcher/preview-toolbar.js} +17 -9
- package/dist/cjs/runtimes/react/components/preview-switcher/preview-toolbar.js.map +1 -0
- package/dist/cjs/runtimes/react/hooks/makeswift-api.js +9 -10
- package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-selector.js +1 -1
- package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
- package/dist/cjs/runtimes/react/root-style-registry.js +24 -13
- package/dist/cjs/runtimes/react/root-style-registry.js.map +1 -1
- package/dist/cjs/{next/preview-mode.js → testing/fixtures.js} +16 -18
- package/dist/cjs/testing/fixtures.js.map +1 -0
- package/dist/cjs/utils/esm-compat.js +29 -0
- package/dist/cjs/utils/esm-compat.js.map +1 -0
- package/dist/esm/api/site-version/index.js +75 -0
- package/dist/esm/api/site-version/index.js.map +1 -0
- package/dist/esm/api-handler/handlers/manifest.js +2 -3
- package/dist/esm/api-handler/handlers/manifest.js.map +1 -1
- package/dist/esm/api-handler/handlers/redirect-live.js +26 -0
- package/dist/esm/api-handler/handlers/redirect-live.js.map +1 -0
- package/dist/esm/api-handler/index.js +7 -6
- package/dist/esm/api-handler/index.js.map +1 -1
- package/dist/esm/api-handler/request-response.js +9 -0
- package/dist/esm/api-handler/request-response.js.map +1 -1
- package/dist/esm/client/index.js +65 -58
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/components/builtin/Root/Root.js +4 -4
- package/dist/esm/components/builtin/Root/Root.js.map +1 -1
- package/dist/esm/components/builtin/Video/Video.js +1 -1
- package/dist/esm/components/builtin/Video/Video.js.map +1 -1
- package/dist/esm/components/hooks/useMediaQuery.js +1 -2
- package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
- package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +1 -1
- package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
- package/dist/esm/components/shared/react-player.js +7 -0
- package/dist/esm/components/shared/react-player.js.map +1 -0
- package/dist/esm/next/api-handler/config/app-router.js +7 -9
- package/dist/esm/next/api-handler/config/app-router.js.map +1 -1
- package/dist/esm/next/api-handler/config/pages-router.js +7 -9
- package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/app-router-redirect-preview.js +64 -0
- package/dist/esm/next/api-handler/handlers/app-router-redirect-preview.js.map +1 -0
- package/dist/esm/next/api-handler/handlers/pages-router-redirect-preview.js +52 -0
- package/dist/esm/next/api-handler/handlers/pages-router-redirect-preview.js.map +1 -0
- package/dist/esm/next/api-handler/index.js +1 -1
- package/dist/esm/next/api-handler/index.js.map +1 -1
- package/dist/esm/next/api-handler/preview.js +18 -0
- package/dist/esm/next/api-handler/preview.js.map +1 -0
- package/dist/esm/next/app-router-site-version.js +16 -0
- package/dist/esm/next/app-router-site-version.js.map +1 -0
- package/dist/esm/next/client.js +10 -4
- package/dist/esm/next/client.js.map +1 -1
- package/dist/esm/next/components/framework-provider/index.js.map +1 -1
- package/dist/esm/next/components/page.js +2 -4
- package/dist/esm/next/components/page.js.map +1 -1
- package/dist/esm/next/index.js.map +1 -1
- package/dist/esm/next/middleware/request-utils.js +14 -17
- package/dist/esm/next/middleware/request-utils.js.map +1 -1
- package/dist/esm/next/root-style-registry.js +12 -17
- package/dist/esm/next/root-style-registry.js.map +1 -1
- package/dist/esm/next/server.js +1 -1
- package/dist/esm/next/server.js.map +1 -1
- package/dist/esm/next/testing/page-rendering.js +2 -2
- package/dist/esm/next/testing/page-rendering.js.map +1 -1
- package/dist/esm/next/testing/react-provider.js +2 -2
- package/dist/esm/next/testing/react-provider.js.map +1 -1
- package/dist/esm/next/tests/test-utils.js +6 -4
- package/dist/esm/next/tests/test-utils.js.map +1 -1
- package/dist/esm/runtimes/react/components/RuntimeProvider.js +7 -9
- package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
- package/dist/esm/runtimes/react/components/framework-context.js +5 -2
- package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
- package/dist/esm/runtimes/react/components/page/index.js +19 -17
- package/dist/esm/runtimes/react/components/page/index.js.map +1 -1
- package/dist/esm/runtimes/react/components/{draft-switcher/draft-switcher.js → preview-switcher/preview-switcher.js} +8 -18
- package/dist/esm/runtimes/react/components/preview-switcher/preview-switcher.js.map +1 -0
- package/dist/esm/runtimes/react/components/{draft-switcher/draft-toolbar.js → preview-switcher/preview-toolbar.js} +13 -5
- package/dist/esm/runtimes/react/components/preview-switcher/preview-toolbar.js.map +1 -0
- package/dist/esm/runtimes/react/hooks/makeswift-api.js +1 -2
- package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-selector.js +1 -1
- package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
- package/dist/esm/runtimes/react/root-style-registry.js +24 -13
- package/dist/esm/runtimes/react/root-style-registry.js.map +1 -1
- package/dist/esm/testing/fixtures.js +13 -0
- package/dist/esm/testing/fixtures.js.map +1 -0
- package/dist/esm/utils/esm-compat.js +5 -0
- package/dist/esm/utils/esm-compat.js.map +1 -0
- package/dist/types/api/site-version/index.d.ts +19 -0
- package/dist/types/api/site-version/index.d.ts.map +1 -0
- package/dist/types/api/site-version/site-version.test.d.ts +2 -0
- package/dist/types/api/site-version/site-version.test.d.ts.map +1 -0
- package/dist/types/api-handler/handlers/manifest.d.ts +0 -2
- package/dist/types/api-handler/handlers/manifest.d.ts.map +1 -1
- package/dist/types/api-handler/handlers/redirect-live.d.ts +5 -0
- package/dist/types/api-handler/handlers/redirect-live.d.ts.map +1 -0
- package/dist/types/api-handler/index.d.ts +4 -4
- package/dist/types/api-handler/index.d.ts.map +1 -1
- package/dist/types/api-handler/request-response.d.ts +1 -0
- package/dist/types/api-handler/request-response.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +32 -23
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Root/Root.d.ts +1 -1
- package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
- package/dist/types/components/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
- package/dist/types/components/shared/react-player.d.ts +3 -0
- package/dist/types/components/shared/react-player.d.ts.map +1 -0
- package/dist/types/next/api-handler/config/app-router.d.ts +3 -2
- package/dist/types/next/api-handler/config/app-router.d.ts.map +1 -1
- package/dist/types/next/api-handler/config/pages-router.d.ts +3 -2
- package/dist/types/next/api-handler/config/pages-router.d.ts.map +1 -1
- package/dist/types/next/api-handler/handlers/app-router-redirect-preview.d.ts +5 -0
- package/dist/types/next/api-handler/handlers/app-router-redirect-preview.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/app-router-redirect-preview.test.d.ts +2 -0
- package/dist/types/next/api-handler/handlers/app-router-redirect-preview.test.d.ts.map +1 -0
- package/dist/types/next/api-handler/handlers/pages-router-redirect-preview.d.ts +4 -0
- package/dist/types/next/api-handler/handlers/pages-router-redirect-preview.d.ts.map +1 -0
- package/dist/types/next/api-handler/preview.d.ts +11 -0
- package/dist/types/next/api-handler/preview.d.ts.map +1 -0
- package/dist/types/next/app-router-site-version.d.ts +3 -0
- package/dist/types/next/app-router-site-version.d.ts.map +1 -0
- package/dist/types/next/client.d.ts +3 -3
- package/dist/types/next/client.d.ts.map +1 -1
- package/dist/types/next/components/page.d.ts +2 -6
- package/dist/types/next/components/page.d.ts.map +1 -1
- package/dist/types/next/index.d.ts +1 -1
- package/dist/types/next/index.d.ts.map +1 -1
- package/dist/types/next/middleware/request-utils.d.ts +1 -0
- package/dist/types/next/middleware/request-utils.d.ts.map +1 -1
- package/dist/types/next/root-style-registry.d.ts +3 -12
- package/dist/types/next/root-style-registry.d.ts.map +1 -1
- package/dist/types/next/server.d.ts +1 -1
- package/dist/types/next/server.d.ts.map +1 -1
- package/dist/types/next/testing/react-provider.d.ts +3 -2
- package/dist/types/next/testing/react-provider.d.ts.map +1 -1
- package/dist/types/next/tests/server.api-handler-app-router-redirect-preview.test.d.ts +2 -0
- package/dist/types/next/tests/server.api-handler-app-router-redirect-preview.test.d.ts.map +1 -0
- package/dist/types/next/tests/server.api-handler-pages-router-redirect-preview.test.d.ts +2 -0
- package/dist/types/next/tests/server.api-handler-pages-router-redirect-preview.test.d.ts.map +1 -0
- package/dist/types/next/tests/server.api-handler-redirect-live.test.d.ts +2 -0
- package/dist/types/next/tests/server.api-handler-redirect-live.test.d.ts.map +1 -0
- package/dist/types/next/tests/test-utils.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +3 -2
- package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/framework-context.d.ts +2 -2
- package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/page/index.d.ts +23 -3
- package/dist/types/runtimes/react/components/page/index.d.ts.map +1 -1
- package/dist/types/runtimes/react/components/preview-switcher/preview-switcher.d.ts +4 -0
- package/dist/types/runtimes/react/components/preview-switcher/preview-switcher.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/preview-switcher/preview-toolbar.d.ts +2 -0
- package/dist/types/runtimes/react/components/preview-switcher/preview-toolbar.d.ts.map +1 -0
- package/dist/types/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
- package/dist/types/runtimes/react/root-style-registry.d.ts +23 -11
- package/dist/types/runtimes/react/root-style-registry.d.ts.map +1 -1
- package/dist/types/testing/fixtures.d.ts +7 -0
- package/dist/types/testing/fixtures.d.ts.map +1 -0
- package/dist/types/utils/esm-compat.d.ts +2 -0
- package/dist/types/utils/esm-compat.d.ts.map +1 -0
- package/package.json +6 -5
- package/dist/cjs/api/site-version.js +0 -42
- package/dist/cjs/api/site-version.js.map +0 -1
- package/dist/cjs/api-handler/handlers/clear-draft.js.map +0 -1
- package/dist/cjs/next/api-handler/draft.js.map +0 -1
- package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +0 -1
- package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +0 -1
- package/dist/cjs/next/draft-mode/index.js.map +0 -1
- package/dist/cjs/next/preview-mode.js.map +0 -1
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +0 -1
- package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +0 -1
- package/dist/esm/api/site-version.js +0 -15
- package/dist/esm/api/site-version.js.map +0 -1
- package/dist/esm/api-handler/handlers/clear-draft.js +0 -17
- package/dist/esm/api-handler/handlers/clear-draft.js.map +0 -1
- package/dist/esm/next/api-handler/draft.js +0 -14
- package/dist/esm/next/api-handler/draft.js.map +0 -1
- package/dist/esm/next/api-handler/handlers/redirect-draft.js +0 -52
- package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +0 -1
- package/dist/esm/next/api-handler/handlers/redirect-preview.js +0 -37
- package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +0 -1
- package/dist/esm/next/draft-mode/index.js +0 -30
- package/dist/esm/next/draft-mode/index.js.map +0 -1
- package/dist/esm/next/preview-mode.js +0 -16
- package/dist/esm/next/preview-mode.js.map +0 -1
- package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +0 -1
- package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +0 -1
- package/dist/types/api/site-version.d.ts +0 -7
- package/dist/types/api/site-version.d.ts.map +0 -1
- package/dist/types/api-handler/handlers/clear-draft.d.ts +0 -7
- package/dist/types/api-handler/handlers/clear-draft.d.ts.map +0 -1
- package/dist/types/next/api-handler/draft.d.ts +0 -8
- package/dist/types/next/api-handler/draft.d.ts.map +0 -1
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +0 -6
- package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +0 -1
- package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts +0 -2
- package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts.map +0 -1
- package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +0 -5
- package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +0 -1
- package/dist/types/next/draft-mode/index.d.ts +0 -15
- package/dist/types/next/draft-mode/index.d.ts.map +0 -1
- package/dist/types/next/preview-mode.d.ts +0 -17
- package/dist/types/next/preview-mode.d.ts.map +0 -1
- package/dist/types/next/tests/server.api-handler-clear-draft.test.d.ts +0 -2
- package/dist/types/next/tests/server.api-handler-clear-draft.test.d.ts.map +0 -1
- package/dist/types/next/tests/server.api-handler-redirect-draft.test.d.ts +0 -2
- package/dist/types/next/tests/server.api-handler-redirect-draft.test.d.ts.map +0 -1
- package/dist/types/next/tests/server.api-handler-redirect-preview.test.d.ts +0 -2
- package/dist/types/next/tests/server.api-handler-redirect-preview.test.d.ts.map +0 -1
- package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +0 -4
- package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +0 -1
- package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +0 -6
- package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +0 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var site_version_exports = {};
|
|
20
|
+
__export(site_version_exports, {
|
|
21
|
+
ApiHandlerHeaders: () => ApiHandlerHeaders,
|
|
22
|
+
deserializeSiteVersion: () => deserializeSiteVersion,
|
|
23
|
+
secondsUntilSiteVersionExpiration: () => secondsUntilSiteVersionExpiration,
|
|
24
|
+
serializeSiteVersion: () => serializeSiteVersion,
|
|
25
|
+
siteVersionSchema: () => siteVersionSchema
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(site_version_exports);
|
|
28
|
+
var import_zod = require("zod");
|
|
29
|
+
var import_jwt_decode = require("jwt-decode");
|
|
30
|
+
const ApiHandlerHeaders = {
|
|
31
|
+
SiteVersion: "X-Makeswift-Site-Version"
|
|
32
|
+
};
|
|
33
|
+
const decodedTokenPayloadSchema = import_zod.z.object({
|
|
34
|
+
exp: import_zod.z.number()
|
|
35
|
+
});
|
|
36
|
+
const siteVersionSchema = import_zod.z.object({
|
|
37
|
+
version: import_zod.z.string(),
|
|
38
|
+
token: import_zod.z.string()
|
|
39
|
+
});
|
|
40
|
+
function millisecondsToSeconds(ms) {
|
|
41
|
+
return Math.floor(ms / 1e3);
|
|
42
|
+
}
|
|
43
|
+
function serializeSiteVersion(data) {
|
|
44
|
+
const jsonString = JSON.stringify({ version: data.version, token: data.token });
|
|
45
|
+
return jsonString;
|
|
46
|
+
}
|
|
47
|
+
function parseSerializedSiteVersion(input) {
|
|
48
|
+
try {
|
|
49
|
+
return siteVersionSchema.parse(JSON.parse(input));
|
|
50
|
+
} catch {
|
|
51
|
+
console.error("Failed to parse serialized site version:", input);
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function getSiteVersionTokenPayload(siteVersion) {
|
|
56
|
+
try {
|
|
57
|
+
const decoded = (0, import_jwt_decode.jwtDecode)(siteVersion.token);
|
|
58
|
+
return decodedTokenPayloadSchema.parse(decoded);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error("Invalid site version token");
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function secondsUntilTokenExpiration(tokenPayload) {
|
|
65
|
+
const currentTime = millisecondsToSeconds(Date.now());
|
|
66
|
+
return Math.max(tokenPayload.exp - currentTime, 0);
|
|
67
|
+
}
|
|
68
|
+
function secondsUntilSiteVersionExpiration(siteVersion) {
|
|
69
|
+
try {
|
|
70
|
+
const tokenPayload = getSiteVersionTokenPayload(siteVersion);
|
|
71
|
+
return secondsUntilTokenExpiration(tokenPayload);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.error("Failed to check site version expiration:", error);
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function isSiteVersionExpired(siteVersion) {
|
|
78
|
+
return secondsUntilSiteVersionExpiration(siteVersion) <= 0;
|
|
79
|
+
}
|
|
80
|
+
function deserializeSiteVersion(input) {
|
|
81
|
+
try {
|
|
82
|
+
const parsedSiteVersion = parseSerializedSiteVersion(input);
|
|
83
|
+
if (parsedSiteVersion == null)
|
|
84
|
+
return null;
|
|
85
|
+
if (isSiteVersionExpired(parsedSiteVersion)) {
|
|
86
|
+
console.error("Site version token is expired");
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return parsedSiteVersion;
|
|
90
|
+
} catch {
|
|
91
|
+
console.error("Failed to deserialize site version:", input);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
+
0 && (module.exports = {
|
|
97
|
+
ApiHandlerHeaders,
|
|
98
|
+
deserializeSiteVersion,
|
|
99
|
+
secondsUntilSiteVersionExpiration,
|
|
100
|
+
serializeSiteVersion,
|
|
101
|
+
siteVersionSchema
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/site-version/index.ts"],"sourcesContent":["import { z } from 'zod'\nimport { jwtDecode } from 'jwt-decode'\n\nexport const ApiHandlerHeaders = {\n SiteVersion: 'X-Makeswift-Site-Version',\n}\n\nconst decodedTokenPayloadSchema = z.object({\n exp: z.number(),\n})\n\ntype DecodedTokenPayload = z.infer<typeof decodedTokenPayloadSchema>\n\nexport const siteVersionSchema = z.object({\n version: z.string(),\n token: z.string(),\n})\n\nexport type SiteVersion = z.infer<typeof siteVersionSchema>\n\nfunction millisecondsToSeconds(ms: number): number {\n return Math.floor(ms / 1000)\n}\n\nexport function serializeSiteVersion(data: SiteVersion): string {\n const jsonString = JSON.stringify({ version: data.version, token: data.token })\n return jsonString\n}\n\nfunction parseSerializedSiteVersion(input: string): SiteVersion | null {\n try {\n return siteVersionSchema.parse(JSON.parse(input))\n } catch {\n console.error('Failed to parse serialized site version:', input)\n return null\n }\n}\n\nfunction getSiteVersionTokenPayload(siteVersion: SiteVersion): DecodedTokenPayload {\n try {\n const decoded = jwtDecode<DecodedTokenPayload>(siteVersion.token)\n return decodedTokenPayloadSchema.parse(decoded)\n } catch (error) {\n console.error('Invalid site version token')\n throw error\n }\n}\n\nfunction secondsUntilTokenExpiration(tokenPayload: DecodedTokenPayload): number {\n const currentTime = millisecondsToSeconds(Date.now())\n return Math.max(tokenPayload.exp - currentTime, 0)\n}\n\nexport function secondsUntilSiteVersionExpiration(siteVersion: SiteVersion): number {\n try {\n const tokenPayload = getSiteVersionTokenPayload(siteVersion)\n return secondsUntilTokenExpiration(tokenPayload)\n } catch (error) {\n console.error('Failed to check site version expiration:', error)\n return 0\n }\n}\n\nfunction isSiteVersionExpired(siteVersion: SiteVersion): boolean {\n return secondsUntilSiteVersionExpiration(siteVersion) <= 0\n}\n\nexport function deserializeSiteVersion(input: string): SiteVersion | null {\n try {\n const parsedSiteVersion = parseSerializedSiteVersion(input)\n if (parsedSiteVersion == null) return null\n\n if (isSiteVersionExpired(parsedSiteVersion)) {\n console.error('Site version token is expired')\n return null\n }\n return parsedSiteVersion\n } catch {\n console.error('Failed to deserialize site version:', input)\n return null\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,wBAA0B;AAEnB,MAAM,oBAAoB;AAAA,EAC/B,aAAa;AACf;AAEA,MAAM,4BAA4B,aAAE,OAAO;AAAA,EACzC,KAAK,aAAE,OAAO;AAChB,CAAC;AAIM,MAAM,oBAAoB,aAAE,OAAO;AAAA,EACxC,SAAS,aAAE,OAAO;AAAA,EAClB,OAAO,aAAE,OAAO;AAClB,CAAC;AAID,SAAS,sBAAsB,IAAoB;AACjD,SAAO,KAAK,MAAM,KAAK,GAAI;AAC7B;AAEO,SAAS,qBAAqB,MAA2B;AAC9D,QAAM,aAAa,KAAK,UAAU,EAAE,SAAS,KAAK,SAAS,OAAO,KAAK,MAAM,CAAC;AAC9E,SAAO;AACT;AAEA,SAAS,2BAA2B,OAAmC;AACrE,MAAI;AACF,WAAO,kBAAkB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,EAClD,QAAQ;AACN,YAAQ,MAAM,4CAA4C,KAAK;AAC/D,WAAO;AAAA,EACT;AACF;AAEA,SAAS,2BAA2B,aAA+C;AACjF,MAAI;AACF,UAAM,cAAU,6BAA+B,YAAY,KAAK;AAChE,WAAO,0BAA0B,MAAM,OAAO;AAAA,EAChD,SAAS,OAAO;AACd,YAAQ,MAAM,4BAA4B;AAC1C,UAAM;AAAA,EACR;AACF;AAEA,SAAS,4BAA4B,cAA2C;AAC9E,QAAM,cAAc,sBAAsB,KAAK,IAAI,CAAC;AACpD,SAAO,KAAK,IAAI,aAAa,MAAM,aAAa,CAAC;AACnD;AAEO,SAAS,kCAAkC,aAAkC;AAClF,MAAI;AACF,UAAM,eAAe,2BAA2B,WAAW;AAC3D,WAAO,4BAA4B,YAAY;AAAA,EACjD,SAAS,OAAO;AACd,YAAQ,MAAM,4CAA4C,KAAK;AAC/D,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,aAAmC;AAC/D,SAAO,kCAAkC,WAAW,KAAK;AAC3D;AAEO,SAAS,uBAAuB,OAAmC;AACxE,MAAI;AACF,UAAM,oBAAoB,2BAA2B,KAAK;AAC1D,QAAI,qBAAqB;AAAM,aAAO;AAEtC,QAAI,qBAAqB,iBAAiB,GAAG;AAC3C,cAAQ,MAAM,+BAA+B;AAC7C,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,YAAQ,MAAM,uCAAuC,KAAK;AAC1D,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -28,9 +28,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
28
28
|
return import_request_response.ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
29
29
|
}
|
|
30
30
|
return import_request_response.ApiResponse.json({
|
|
31
|
-
version: "0.25.0-canary.
|
|
32
|
-
previewMode: false,
|
|
33
|
-
draftMode: false,
|
|
31
|
+
version: "0.25.0-canary.14",
|
|
34
32
|
interactionMode: true,
|
|
35
33
|
clientSideNavigation: false,
|
|
36
34
|
elementFromPoint: false,
|
|
@@ -40,6 +38,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
40
38
|
localizedPageSSR: true,
|
|
41
39
|
webhook: true,
|
|
42
40
|
localizedPagesOnlineByDefault: true,
|
|
41
|
+
previewToken: true,
|
|
43
42
|
...manifest
|
|
44
43
|
});
|
|
45
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api-handler/handlers/manifest.ts"],"sourcesContent":["import {\n type ApiRequest,\n type ErrorResponseBody,\n ApiResponse,\n searchParams,\n} from '../request-response'\n\nexport type Manifest = {\n version: string\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/api-handler/handlers/manifest.ts"],"sourcesContent":["import {\n type ApiRequest,\n type ErrorResponseBody,\n ApiResponse,\n searchParams,\n} from '../request-response'\n\nexport type Manifest = {\n version: string\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n customBreakpoints: boolean\n siteVersions: boolean\n unstable_siteVersions: boolean\n localizedPageSSR: boolean\n webhook: boolean\n localizedPagesOnlineByDefault: boolean\n}\n\nexport async function manifestHandler(\n req: ApiRequest,\n { apiKey, manifest }: { apiKey: string; manifest: Partial<Manifest> },\n): Promise<ApiResponse<Manifest | ErrorResponseBody>> {\n const secret = searchParams(req).get('secret')\n\n if (secret !== apiKey) {\n return ApiResponse.json({ message: 'Unauthorized' }, { status: 401 })\n }\n\n return ApiResponse.json({\n version: PACKAGE_VERSION,\n interactionMode: true,\n clientSideNavigation: false,\n elementFromPoint: false,\n customBreakpoints: true,\n siteVersions: true,\n unstable_siteVersions: true,\n localizedPageSSR: true,\n webhook: true,\n localizedPagesOnlineByDefault: true,\n previewToken: true,\n ...manifest,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAKO;AAeP,eAAsB,gBACpB,KACA,EAAE,QAAQ,SAAS,GACiC;AACpD,QAAM,aAAS,sCAAa,GAAG,EAAE,IAAI,QAAQ;AAE7C,MAAI,WAAW,QAAQ;AACrB,WAAO,oCAAY,KAAK,EAAE,SAAS,eAAe,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EACtE;AAEA,SAAO,oCAAY,KAAK;AAAA,IACtB,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,+BAA+B;AAAA,IAC/B,cAAc;AAAA,IACd,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -16,26 +16,35 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var redirect_live_exports = {};
|
|
20
|
+
__export(redirect_live_exports, {
|
|
21
|
+
redirectLiveHandler: () => redirectLiveHandler
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
23
|
+
module.exports = __toCommonJS(redirect_live_exports);
|
|
24
24
|
var import_cookie = require("cookie");
|
|
25
25
|
var import_request_response = require("../request-response");
|
|
26
26
|
var import_cookies = require("../cookies");
|
|
27
|
-
|
|
27
|
+
const REDIRECT_SEARCH_PARAM = "x-makeswift-redirect-live";
|
|
28
|
+
async function redirectLiveHandler(req, { previewCookieNames }) {
|
|
29
|
+
const params = (0, import_request_response.searchParams)(req);
|
|
30
|
+
const redirectDestination = params.get(REDIRECT_SEARCH_PARAM) ?? "/";
|
|
31
|
+
const redirectDestinationUrl = new URL(
|
|
32
|
+
decodeURIComponent(redirectDestination),
|
|
33
|
+
"http://localhost"
|
|
34
|
+
);
|
|
35
|
+
redirectDestinationUrl.searchParams.delete(REDIRECT_SEARCH_PARAM);
|
|
36
|
+
const destinationPath = `${redirectDestinationUrl.pathname}${redirectDestinationUrl.search}${redirectDestinationUrl.hash}`;
|
|
28
37
|
const headers = new Headers();
|
|
29
|
-
|
|
38
|
+
previewCookieNames.forEach((name) => {
|
|
30
39
|
headers.append(
|
|
31
40
|
import_cookies.SET_COOKIE_HEADER,
|
|
32
|
-
(0, import_cookie.serialize)(name, "", { ...import_cookies.cookieSettingOptions, expires: /* @__PURE__ */ new Date(0) })
|
|
41
|
+
(0, import_cookie.serialize)(name, "", { ...import_cookies.cookieSettingOptions, expires: /* @__PURE__ */ new Date(0), maxAge: 0 })
|
|
33
42
|
);
|
|
34
43
|
});
|
|
35
|
-
return import_request_response.ApiResponse.
|
|
44
|
+
return import_request_response.ApiResponse.redirect(destinationPath, { headers });
|
|
36
45
|
}
|
|
37
46
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
47
|
0 && (module.exports = {
|
|
39
|
-
|
|
48
|
+
redirectLiveHandler
|
|
40
49
|
});
|
|
41
|
-
//# sourceMappingURL=
|
|
50
|
+
//# sourceMappingURL=redirect-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api-handler/handlers/redirect-live.ts"],"sourcesContent":["import { serialize as serializeCookie } from 'cookie'\nimport { type ApiRequest, ApiResponse, searchParams } from '../request-response'\nimport { SET_COOKIE_HEADER, cookieSettingOptions } from '../cookies'\n\nconst REDIRECT_SEARCH_PARAM = 'x-makeswift-redirect-live'\n\nexport async function redirectLiveHandler(\n req: ApiRequest,\n { previewCookieNames }: { previewCookieNames: string[] },\n): Promise<ApiResponse<null>> {\n const params = searchParams(req)\n const redirectDestination = params.get(REDIRECT_SEARCH_PARAM) ?? '/'\n\n const redirectDestinationUrl = new URL(\n decodeURIComponent(redirectDestination),\n 'http://localhost',\n )\n redirectDestinationUrl.searchParams.delete(REDIRECT_SEARCH_PARAM)\n\n const destinationPath = `${redirectDestinationUrl.pathname}${redirectDestinationUrl.search}${redirectDestinationUrl.hash}`\n\n const headers = new Headers()\n\n previewCookieNames.forEach(name => {\n headers.append(\n SET_COOKIE_HEADER,\n serializeCookie(name, '', { ...cookieSettingOptions, expires: new Date(0), maxAge: 0 }),\n )\n })\n\n return ApiResponse.redirect(destinationPath, { headers })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6C;AAC7C,8BAA2D;AAC3D,qBAAwD;AAExD,MAAM,wBAAwB;AAE9B,eAAsB,oBACpB,KACA,EAAE,mBAAmB,GACO;AAC5B,QAAM,aAAS,sCAAa,GAAG;AAC/B,QAAM,sBAAsB,OAAO,IAAI,qBAAqB,KAAK;AAEjE,QAAM,yBAAyB,IAAI;AAAA,IACjC,mBAAmB,mBAAmB;AAAA,IACtC;AAAA,EACF;AACA,yBAAuB,aAAa,OAAO,qBAAqB;AAEhE,QAAM,kBAAkB,GAAG,uBAAuB,QAAQ,GAAG,uBAAuB,MAAM,GAAG,uBAAuB,IAAI;AAExH,QAAM,UAAU,IAAI,QAAQ;AAE5B,qBAAmB,QAAQ,UAAQ;AACjC,YAAQ;AAAA,MACN;AAAA,UACA,cAAAA,WAAgB,MAAM,IAAI,EAAE,GAAG,qCAAsB,SAAS,oBAAI,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC;AAAA,IACxF;AAAA,EACF,CAAC;AAED,SAAO,oCAAY,SAAS,iBAAiB,EAAE,QAAQ,CAAC;AAC1D;","names":["serializeCookie"]}
|
|
@@ -23,7 +23,7 @@ __export(api_handler_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(api_handler_exports);
|
|
24
24
|
var import_path_to_regexp = require("path-to-regexp");
|
|
25
25
|
var import_site_version = require("../api/site-version");
|
|
26
|
-
var
|
|
26
|
+
var import_redirect_live = require("./handlers/redirect-live");
|
|
27
27
|
var import_element_tree = require("./handlers/element-tree");
|
|
28
28
|
var import_fonts = require("./handlers/fonts");
|
|
29
29
|
var import_manifest = require("./handlers/manifest");
|
|
@@ -41,7 +41,7 @@ function createApiHandler(apiKey, {
|
|
|
41
41
|
client,
|
|
42
42
|
manifest,
|
|
43
43
|
revalidationHandler,
|
|
44
|
-
|
|
44
|
+
previewCookieNames
|
|
45
45
|
}) {
|
|
46
46
|
if (typeof apiKey !== "string") {
|
|
47
47
|
throw new Error(
|
|
@@ -57,10 +57,11 @@ function createApiHandler(apiKey, {
|
|
|
57
57
|
return res;
|
|
58
58
|
};
|
|
59
59
|
async function apiRouteHandler(req, route) {
|
|
60
|
-
const
|
|
60
|
+
const versionHeader = req.headers.get(import_site_version.ApiHandlerHeaders.SiteVersion);
|
|
61
|
+
const siteVersion = versionHeader != null ? (0, import_site_version.deserializeSiteVersion)(versionHeader) : null;
|
|
61
62
|
const matches = (pattern) => (0, import_path_to_regexp.match)(pattern, { decode: decodeURIComponent })(route);
|
|
62
|
-
if (matches("/
|
|
63
|
-
return (0,
|
|
63
|
+
if (matches("/redirect-live"))
|
|
64
|
+
return (0, import_redirect_live.redirectLiveHandler)(req, { previewCookieNames });
|
|
64
65
|
if (matches("/element-tree"))
|
|
65
66
|
return (0, import_element_tree.elementTreeHandler)(req, { runtime });
|
|
66
67
|
if (matches("/fonts"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api-handler/index.ts"],"sourcesContent":["import { Match, match as matchPattern } from 'path-to-regexp'\n\nimport { APIResource } from '../api'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/api-handler/index.ts"],"sourcesContent":["import { Match, match as matchPattern } from 'path-to-regexp'\n\nimport { APIResource } from '../api'\nimport { ApiHandlerHeaders, deserializeSiteVersion } from '../api/site-version'\n\nimport { MakeswiftClient } from '../client'\nimport { ReactRuntime } from '../react'\n\nimport { redirectLiveHandler } from './handlers/redirect-live'\nimport { elementTreeHandler } from './handlers/element-tree'\nimport { fontsHandler, type Font, type GetFonts } from './handlers/fonts'\nimport { manifestHandler, type Manifest } from './handlers/manifest'\nimport { mergeTranslatedDataHandler } from './handlers/merge-translated-data'\nimport { revalidateHandler } from './handlers/revalidate'\nimport { translatableDataHandler } from './handlers/translatable-data'\nimport { webhookHandler } from './handlers/webhook'\nimport { type OnPublish } from './handlers/webhook/types'\n\nimport {\n type ApiRequest,\n type ErrorResponseBody,\n ApiResponse,\n searchParams,\n} from './request-response'\n\nimport { applyCorsHeaders } from './cors'\n\nexport type { Manifest, Font }\n\ntype Events = { onPublish: OnPublish }\n\nexport type ApiHandlerUserConfig = {\n runtime: ReactRuntime\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n}\n\nexport type ApiHandlerInternalConfig = {\n client: MakeswiftClient\n manifest: Partial<Manifest>\n revalidationHandler: (path?: string) => Promise<void>\n previewCookieNames: string[]\n}\n\ntype ApiHandlerConfig = ApiHandlerUserConfig & ApiHandlerInternalConfig\n\ntype ResponseType =\n | Awaited<\n | ReturnType<typeof redirectLiveHandler>\n | ReturnType<typeof elementTreeHandler>\n | ReturnType<typeof fontsHandler>\n | ReturnType<typeof manifestHandler>\n | ReturnType<typeof mergeTranslatedDataHandler>\n | ReturnType<typeof revalidateHandler>\n | ReturnType<typeof translatableDataHandler>\n | ReturnType<typeof webhookHandler>\n >\n | ApiResponse<APIResource>\n | ApiResponse<ErrorResponseBody>\n | Response\n\ntype ApiHandler = (req: ApiRequest, route: string) => Promise<ResponseType>\n\nexport function createApiHandler(\n apiKey: string,\n {\n runtime,\n appOrigin = 'https://app.makeswift.com',\n getFonts,\n events,\n client,\n manifest,\n revalidationHandler,\n previewCookieNames,\n }: ApiHandlerConfig,\n): ApiHandler {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift API handler must be passed a valid Makeswift site API key. ' +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function (req: ApiRequest, route: string): Promise<ResponseType> {\n const res =\n req.method.toUpperCase() !== 'OPTIONS'\n ? await apiRouteHandler(req, route)\n : new Response(null, { status: 204, headers: [['Content-Length', '0']] })\n\n applyCorsHeaders(res.headers, {\n origin: appOrigin,\n allowedHeaders: ['Content-Type', 'Authorization'],\n })\n\n return res\n }\n\n async function apiRouteHandler(req: ApiRequest, route: string): Promise<ResponseType> {\n const versionHeader = req.headers.get(ApiHandlerHeaders.SiteVersion)\n\n const siteVersion = versionHeader != null ? deserializeSiteVersion(versionHeader) : null\n\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(route)\n\n if (matches('/redirect-live')) return redirectLiveHandler(req, { previewCookieNames })\n if (matches('/element-tree')) return elementTreeHandler(req, { runtime })\n if (matches('/fonts')) return fontsHandler(req, { getFonts })\n if (matches('/manifest')) return manifestHandler(req, { apiKey, manifest })\n if (matches('/merge-translated-data')) return mergeTranslatedDataHandler(req, { client })\n if (matches('/revalidate')) {\n return revalidateHandler(req, { apiKey, revalidatePath: revalidationHandler })\n }\n\n if (matches('/translatable-data')) return translatableDataHandler(req, { client })\n if (matches('/webhook')) {\n return webhookHandler(req, { apiKey, events, revalidate: revalidationHandler })\n }\n\n const handleResource = <T extends APIResource>(\n resource: T | null,\n ): ApiResponse<APIResource | ErrorResponseBody> => {\n return resource !== null\n ? ApiResponse.json(resource)\n : ApiResponse.json({ message: 'Not Found' }, { status: 404 })\n }\n\n let m\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id, siteVersion).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale, siteVersion)\n .then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const localeParam = searchParams(req).get('locale')\n const locale = typeof localeParam === 'string' ? localeParam : undefined\n\n return client.getPagePathnameSlice(m.params.id, siteVersion, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n return ApiResponse.json({ message: 'Not Found' }, { status: 404 })\n }\n}\n"],"mappings":"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","names":["matchPattern"]}
|
|
@@ -33,6 +33,15 @@ const ApiResponse = {
|
|
|
33
33
|
...init,
|
|
34
34
|
headers
|
|
35
35
|
});
|
|
36
|
+
},
|
|
37
|
+
redirect(location, init) {
|
|
38
|
+
const headers = new Headers(init?.headers);
|
|
39
|
+
headers.set("Location", location.toString());
|
|
40
|
+
return new Response(null, {
|
|
41
|
+
status: 307,
|
|
42
|
+
...init,
|
|
43
|
+
headers
|
|
44
|
+
});
|
|
36
45
|
}
|
|
37
46
|
};
|
|
38
47
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api-handler/request-response.ts"],"sourcesContent":["export type ApiRequest = Pick<Request, 'method' | 'json' | 'headers' | 'url'>\n\nexport function searchParams(req: ApiRequest): URLSearchParams {\n // provide a placeholder domain to enable parsing of relative URLs\n return new URL(req.url, 'http://localhost').searchParams\n}\n\nexport interface ApiResponse<R extends unknown = unknown> extends Response {\n readonly __responseType?: R // prevent unsafe assignment between instances with incompatible `R`\n}\n\nexport const ApiResponse = {\n json<T>(body: T, init?: ResponseInit): ApiResponse<T> {\n const headers = new Headers(init?.headers)\n headers.set('Content-Type', 'application/json')\n\n return new Response(JSON.stringify(body), {\n ...init,\n headers,\n }) as ApiResponse<T>\n },\n} as const\n\nexport type ErrorResponseBody = { message: string }\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,aAAa,KAAkC;AAE7D,SAAO,IAAI,IAAI,IAAI,KAAK,kBAAkB,EAAE;AAC9C;AAMO,MAAM,cAAc;AAAA,EACzB,KAAQ,MAAS,MAAqC;AACpD,UAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;AACzC,YAAQ,IAAI,gBAAgB,kBAAkB;AAE9C,WAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,MACxC,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/api-handler/request-response.ts"],"sourcesContent":["export type ApiRequest = Pick<Request, 'method' | 'json' | 'headers' | 'url'>\n\nexport function searchParams(req: ApiRequest): URLSearchParams {\n // provide a placeholder domain to enable parsing of relative URLs\n return new URL(req.url, 'http://localhost').searchParams\n}\n\nexport interface ApiResponse<R extends unknown = unknown> extends Response {\n readonly __responseType?: R // prevent unsafe assignment between instances with incompatible `R`\n}\n\nexport const ApiResponse = {\n json<T>(body: T, init?: ResponseInit): ApiResponse<T> {\n const headers = new Headers(init?.headers)\n headers.set('Content-Type', 'application/json')\n\n return new Response(JSON.stringify(body), {\n ...init,\n headers,\n }) as ApiResponse<T>\n },\n\n redirect(location: string | URL, init?: ResponseInit): ApiResponse<null> {\n const headers = new Headers(init?.headers)\n headers.set('Location', location.toString())\n\n // Manually constructing a redirect response. We can’t use the\n // `Response.redirect` shorthand here, since it doesn’t allow passing custom\n // headers; see\n // https://community.cloudflare.com/t/make-redirect-with-additional-headers/249365\n return new Response(null, {\n status: 307,\n ...init,\n headers,\n }) as ApiResponse<null>\n },\n} as const\n\nexport type ErrorResponseBody = { message: string }\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,aAAa,KAAkC;AAE7D,SAAO,IAAI,IAAI,IAAI,KAAK,kBAAkB,EAAE;AAC9C;AAMO,MAAM,cAAc;AAAA,EACzB,KAAQ,MAAS,MAAqC;AACpD,UAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;AACzC,YAAQ,IAAI,gBAAgB,kBAAkB;AAE9C,WAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,MACxC,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS,UAAwB,MAAwC;AACvE,UAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;AACzC,YAAQ,IAAI,YAAY,SAAS,SAAS,CAAC;AAM3C,WAAO,IAAI,SAAS,MAAM;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
|
package/dist/cjs/client/index.js
CHANGED
|
@@ -22,7 +22,8 @@ __export(client_exports, {
|
|
|
22
22
|
SnippetLocation: () => import_types2.SnippetLocation,
|
|
23
23
|
componentDocumentToRootEmbeddedDocument: () => componentDocumentToRootEmbeddedDocument,
|
|
24
24
|
failedResponseBody: () => failedResponseBody,
|
|
25
|
-
pageToRootDocument: () => pageToRootDocument
|
|
25
|
+
pageToRootDocument: () => pageToRootDocument,
|
|
26
|
+
previewTokenPayloadSchema: () => previewTokenPayloadSchema
|
|
26
27
|
});
|
|
27
28
|
module.exports = __toCommonJS(client_exports);
|
|
28
29
|
var import_zod = require("zod");
|
|
@@ -32,7 +33,6 @@ var import_documents = require("../api/graphql/documents");
|
|
|
32
33
|
var import_react = require("../api/react");
|
|
33
34
|
var import_introspection = require("../prop-controllers/introspection");
|
|
34
35
|
var import_react_page = require("../state/react-page");
|
|
35
|
-
var import_site_version = require("../api/site-version");
|
|
36
36
|
var import_pagination = require("../utils/pagination");
|
|
37
37
|
var import_deterministic_uuid = require("../utils/deterministic-uuid");
|
|
38
38
|
var import_controls = require("@makeswift/controls");
|
|
@@ -117,6 +117,11 @@ const makeswiftComponentDocumentFallbackSchema = import_zod.z.object({
|
|
|
117
117
|
locale: import_zod.z.string().nullable(),
|
|
118
118
|
data: import_zod.z.null()
|
|
119
119
|
});
|
|
120
|
+
const previewTokenPayloadSchema = import_zod.z.object({
|
|
121
|
+
payload: import_zod.z.object({
|
|
122
|
+
version: import_zod.z.string()
|
|
123
|
+
})
|
|
124
|
+
});
|
|
120
125
|
function componentDocumentToRootEmbeddedDocument({
|
|
121
126
|
document,
|
|
122
127
|
documentKey,
|
|
@@ -208,13 +213,18 @@ Received "${apiKey}" instead.`
|
|
|
208
213
|
this.runtime = runtime;
|
|
209
214
|
}
|
|
210
215
|
async fetch(path, siteVersion) {
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
const requestUrl = new URL(path, this.apiOrigin);
|
|
217
|
+
const requestHeaders = new Headers({
|
|
218
|
+
"X-API-Key": this.apiKey,
|
|
219
|
+
"Makeswift-Site-API-Key": this.apiKey
|
|
220
|
+
});
|
|
221
|
+
if (siteVersion?.token) {
|
|
222
|
+
requestUrl.searchParams.set("version", siteVersion.version);
|
|
223
|
+
requestHeaders.set("makeswift-preview-token", siteVersion.token);
|
|
224
|
+
}
|
|
225
|
+
const response = await fetch(requestUrl.toString(), {
|
|
226
|
+
headers: requestHeaders,
|
|
227
|
+
...siteVersion != null ? { cache: "no-store" } : {},
|
|
218
228
|
...this.fetchOptions(siteVersion)
|
|
219
229
|
});
|
|
220
230
|
return response;
|
|
@@ -226,11 +236,11 @@ Received "${apiKey}" instead.`
|
|
|
226
236
|
return {};
|
|
227
237
|
}
|
|
228
238
|
getPagesInternal = async ({
|
|
229
|
-
siteVersion =
|
|
239
|
+
siteVersion = null,
|
|
230
240
|
...params
|
|
231
241
|
} = {}) => {
|
|
232
242
|
const queryParams = getPagesQueryParams(params);
|
|
233
|
-
const response = await this.fetch(`
|
|
243
|
+
const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion);
|
|
234
244
|
if (!response.ok) {
|
|
235
245
|
console.error("Failed to get pages", {
|
|
236
246
|
response: await failedResponseBody(response),
|
|
@@ -249,11 +259,8 @@ Received "${apiKey}" instead.`
|
|
|
249
259
|
return parsedResponse.data;
|
|
250
260
|
};
|
|
251
261
|
getPages = (0, import_pagination.toIterablePaginationResult)(this.getPagesInternal);
|
|
252
|
-
async getPage(pathname, {
|
|
253
|
-
|
|
254
|
-
locale
|
|
255
|
-
} = {}) {
|
|
256
|
-
const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
|
|
262
|
+
async getPage(pathname, { siteVersion = null, locale } = {}) {
|
|
263
|
+
const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
|
|
257
264
|
if (locale)
|
|
258
265
|
url.searchParams.set("locale", locale);
|
|
259
266
|
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
@@ -273,7 +280,7 @@ Received "${apiKey}" instead.`
|
|
|
273
280
|
async getTypographies(typographyIds, siteVersion) {
|
|
274
281
|
if (typographyIds.length === 0)
|
|
275
282
|
return [];
|
|
276
|
-
const url = new URL(`
|
|
283
|
+
const url = new URL(`v3/typographies/bulk`, this.apiOrigin);
|
|
277
284
|
typographyIds.forEach((id) => {
|
|
278
285
|
url.searchParams.append("ids", id);
|
|
279
286
|
});
|
|
@@ -291,7 +298,7 @@ Received "${apiKey}" instead.`
|
|
|
291
298
|
async getSwatches(ids, siteVersion) {
|
|
292
299
|
if (ids.length === 0)
|
|
293
300
|
return [];
|
|
294
|
-
const url = new URL(`
|
|
301
|
+
const url = new URL(`v3/swatches/bulk`, this.apiOrigin);
|
|
295
302
|
ids.forEach((id) => {
|
|
296
303
|
url.searchParams.append("ids", id);
|
|
297
304
|
});
|
|
@@ -448,7 +455,7 @@ Received "${apiKey}" instead.`
|
|
|
448
455
|
};
|
|
449
456
|
const siteVersion = await siteVersionPromise;
|
|
450
457
|
const response = await this.fetch(
|
|
451
|
-
`
|
|
458
|
+
`v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,
|
|
452
459
|
siteVersion
|
|
453
460
|
);
|
|
454
461
|
if (!response.ok) {
|
|
@@ -491,11 +498,11 @@ Received "${apiKey}" instead.`
|
|
|
491
498
|
const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback;
|
|
492
499
|
let response;
|
|
493
500
|
const responseForRequestedLocale = await this.fetch(
|
|
494
|
-
`
|
|
501
|
+
`v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,
|
|
495
502
|
siteVersion
|
|
496
503
|
);
|
|
497
504
|
if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {
|
|
498
|
-
response = await this.fetch(`
|
|
505
|
+
response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion);
|
|
499
506
|
} else {
|
|
500
507
|
response = responseForRequestedLocale;
|
|
501
508
|
}
|
|
@@ -535,7 +542,7 @@ Received "${apiKey}" instead.`
|
|
|
535
542
|
};
|
|
536
543
|
}
|
|
537
544
|
async getSwatch(swatchId, siteVersion) {
|
|
538
|
-
const response = await this.fetch(`
|
|
545
|
+
const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion);
|
|
539
546
|
if (!response.ok) {
|
|
540
547
|
if (response.status !== 404) {
|
|
541
548
|
console.error(`Failed to get swatch '${swatchId}'`, {
|
|
@@ -556,7 +563,7 @@ Received "${apiKey}" instead.`
|
|
|
556
563
|
return result.file;
|
|
557
564
|
}
|
|
558
565
|
async getTypography(typographyId, siteVersion) {
|
|
559
|
-
const response = await this.fetch(`
|
|
566
|
+
const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion);
|
|
560
567
|
if (!response.ok) {
|
|
561
568
|
if (response.status !== 404) {
|
|
562
569
|
console.error(`Failed to get typography '${typographyId}'`, {
|
|
@@ -570,7 +577,7 @@ Received "${apiKey}" instead.`
|
|
|
570
577
|
return typography;
|
|
571
578
|
}
|
|
572
579
|
async getGlobalElement(globalElementId, siteVersion) {
|
|
573
|
-
const response = await this.fetch(`
|
|
580
|
+
const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion);
|
|
574
581
|
if (!response.ok) {
|
|
575
582
|
if (response.status !== 404) {
|
|
576
583
|
console.error(`Failed to get global element '${globalElementId}'`, {
|
|
@@ -585,7 +592,7 @@ Received "${apiKey}" instead.`
|
|
|
585
592
|
}
|
|
586
593
|
async getLocalizedGlobalElement(globalElementId, locale, siteVersion) {
|
|
587
594
|
const response = await this.fetch(
|
|
588
|
-
`
|
|
595
|
+
`v3/localized-global-elements/${globalElementId}?locale=${locale}`,
|
|
589
596
|
siteVersion
|
|
590
597
|
);
|
|
591
598
|
if (!response.ok) {
|
|
@@ -604,7 +611,7 @@ Received "${apiKey}" instead.`
|
|
|
604
611
|
async getPagePathnameSlices(pageIds, siteVersion, { locale }) {
|
|
605
612
|
if (pageIds.length === 0)
|
|
606
613
|
return [];
|
|
607
|
-
const url = new URL(`
|
|
614
|
+
const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin);
|
|
608
615
|
pageIds.forEach((id) => url.searchParams.append("ids", id));
|
|
609
616
|
if (locale != null)
|
|
610
617
|
url.searchParams.set("locale", locale);
|
|
@@ -640,44 +647,44 @@ Received "${apiKey}" instead.`
|
|
|
640
647
|
);
|
|
641
648
|
return result.table;
|
|
642
649
|
}
|
|
643
|
-
/**
|
|
644
|
-
* @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap
|
|
645
|
-
* using data from `getPages` instead.
|
|
646
|
-
*/
|
|
647
|
-
async getSitemap({
|
|
648
|
-
limit = 50,
|
|
649
|
-
after,
|
|
650
|
-
pathnamePrefix,
|
|
651
|
-
locale
|
|
652
|
-
} = {}) {
|
|
653
|
-
const url = new URL("v1/sitemap", this.apiOrigin);
|
|
654
|
-
url.searchParams.set("limit", limit.toString());
|
|
655
|
-
if (after != null)
|
|
656
|
-
url.searchParams.set("after", after);
|
|
657
|
-
if (pathnamePrefix != null)
|
|
658
|
-
url.searchParams.set("pathnamePrefix", pathnamePrefix);
|
|
659
|
-
if (locale != null)
|
|
660
|
-
url.searchParams.set("locale", locale);
|
|
661
|
-
const response = await this.fetch(url.pathname + url.search, import_site_version.MakeswiftSiteVersion.Live);
|
|
662
|
-
if (!response.ok) {
|
|
663
|
-
console.error("Failed to get sitemap ", {
|
|
664
|
-
response: await failedResponseBody(response),
|
|
665
|
-
limit,
|
|
666
|
-
after,
|
|
667
|
-
pathnamePrefix,
|
|
668
|
-
locale
|
|
669
|
-
});
|
|
670
|
-
throw new Error(`Failed to get sitemap with error: ${responseError(response)}`);
|
|
671
|
-
}
|
|
672
|
-
const sitemap = await response.json();
|
|
673
|
-
return sitemap;
|
|
674
|
-
}
|
|
675
650
|
getTranslatableData(elementTree) {
|
|
676
651
|
return this.runtime.getTranslatableData(elementTree);
|
|
677
652
|
}
|
|
678
653
|
mergeTranslatedData(elementTree, translatedData) {
|
|
679
654
|
return this.runtime.mergeTranslatedData(elementTree, translatedData);
|
|
680
655
|
}
|
|
656
|
+
async readPreviewToken(token) {
|
|
657
|
+
const response = await fetch(new URL("v1/preview-tokens/reads", this.apiOrigin).toString(), {
|
|
658
|
+
method: "POST",
|
|
659
|
+
headers: {
|
|
660
|
+
["X-API-Key"]: this.apiKey,
|
|
661
|
+
"Makeswift-Site-API-Key": this.apiKey,
|
|
662
|
+
"Content-Type": "application/json"
|
|
663
|
+
},
|
|
664
|
+
body: JSON.stringify({ token }),
|
|
665
|
+
cache: "no-store"
|
|
666
|
+
});
|
|
667
|
+
if (!response.ok) {
|
|
668
|
+
if (response.status === 401) {
|
|
669
|
+
console.error(`Preview token is invalid or expired`, {
|
|
670
|
+
response: await failedResponseBody(response)
|
|
671
|
+
});
|
|
672
|
+
} else if (response.status !== 404) {
|
|
673
|
+
console.error(`Failed to verify preview token`, {
|
|
674
|
+
response: await failedResponseBody(response)
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
return null;
|
|
678
|
+
}
|
|
679
|
+
const json = await response.json();
|
|
680
|
+
const parsed = previewTokenPayloadSchema.safeParse(json);
|
|
681
|
+
if (!parsed.success) {
|
|
682
|
+
throw new Error(
|
|
683
|
+
`Failed to parse preview token payload: ${parsed.error.errors.map((e) => e.message).join("; ")}`
|
|
684
|
+
);
|
|
685
|
+
}
|
|
686
|
+
return parsed.data;
|
|
687
|
+
}
|
|
681
688
|
}
|
|
682
689
|
// Annotate the CommonJS export names for ESM import in node:
|
|
683
690
|
0 && (module.exports = {
|
|
@@ -685,6 +692,7 @@ Received "${apiKey}" instead.`
|
|
|
685
692
|
SnippetLocation,
|
|
686
693
|
componentDocumentToRootEmbeddedDocument,
|
|
687
694
|
failedResponseBody,
|
|
688
|
-
pageToRootDocument
|
|
695
|
+
pageToRootDocument,
|
|
696
|
+
previewTokenPayloadSchema
|
|
689
697
|
});
|
|
690
698
|
//# sourceMappingURL=index.js.map
|