@makeswift/runtime 0.18.1 → 0.19.0-canary.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.
@@ -36,7 +36,7 @@ async function handler(...args) {
36
36
  const supportsPreviewMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => false).with(apiRoutePattern, () => true).exhaustive();
37
37
  const supportsDraftMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
38
38
  const body = {
39
- version: "0.18.1",
39
+ version: "0.19.0-canary.0",
40
40
  previewMode: supportsPreviewMode,
41
41
  draftMode: supportsDraftMode,
42
42
  interactionMode: true,
@@ -29,6 +29,68 @@ var import_introspection = require("../prop-controllers/introspection");
29
29
  var import_react2 = require("../runtimes/react");
30
30
  var import_react_page = require("../state/react-page");
31
31
  var import_preview_mode = require("./preview-mode");
32
+ var import_pagination = require("./utils/pagination");
33
+ const makeswiftPageResultSchema = import_zod.z.object({
34
+ id: import_zod.z.string(),
35
+ path: import_zod.z.string(),
36
+ title: import_zod.z.string().nullable(),
37
+ description: import_zod.z.string().nullable(),
38
+ canonicalUrl: import_zod.z.string().nullable(),
39
+ socialImageUrl: import_zod.z.string().nullable(),
40
+ sitemapPriority: import_zod.z.number().nullable(),
41
+ sitemapFrequency: import_zod.z.enum(["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]).nullable(),
42
+ createdAt: import_zod.z.string(),
43
+ updatedAt: import_zod.z.string(),
44
+ publishedAt: import_zod.z.string().nullable(),
45
+ isOnline: import_zod.z.boolean().nullable(),
46
+ excludedFromSearch: import_zod.z.boolean().nullable(),
47
+ locale: import_zod.z.string(),
48
+ localizedVariants: import_zod.z.array(
49
+ import_zod.z.object({
50
+ locale: import_zod.z.string(),
51
+ path: import_zod.z.string()
52
+ })
53
+ )
54
+ });
55
+ const makeswiftGetPagesResultAPISchema = import_zod.z.object({
56
+ data: import_zod.z.array(makeswiftPageResultSchema),
57
+ hasMore: import_zod.z.boolean()
58
+ });
59
+ const makeswiftGetPagesParamsSchema = import_zod.z.object({
60
+ limit: import_zod.z.number().optional(),
61
+ after: import_zod.z.string().optional(),
62
+ sortBy: import_zod.z.enum(["title", "path", "createdAt", "updatedAt", "publishedAt"]).optional(),
63
+ sortDirection: import_zod.z.enum(["asc", "desc"]).optional(),
64
+ includeOffline: import_zod.z.boolean().optional(),
65
+ pathPrefix: import_zod.z.string().optional(),
66
+ locale: import_zod.z.string().optional()
67
+ });
68
+ function getPagesQueryParams({
69
+ limit = 20,
70
+ after,
71
+ sortBy,
72
+ sortDirection,
73
+ includeOffline,
74
+ pathPrefix,
75
+ locale
76
+ }) {
77
+ const params = new URLSearchParams();
78
+ if (limit != null)
79
+ params.set("limit", limit.toString());
80
+ if (after != null)
81
+ params.set("after", after);
82
+ if (sortBy != null)
83
+ params.set("sortBy", sortBy);
84
+ if (sortDirection != null)
85
+ params.set("sortDirection", sortDirection);
86
+ if (includeOffline != null)
87
+ params.set("includeOffline", includeOffline.toString());
88
+ if (pathPrefix != null)
89
+ params.set("pathPrefix", pathPrefix);
90
+ if (locale != null)
91
+ params.set("locale", locale);
92
+ return params;
93
+ }
32
94
  const pagePathnameSlicesAPISchema = import_zod.z.array(
33
95
  import_zod.z.object({
34
96
  id: import_zod.z.string(),
@@ -86,17 +148,26 @@ Received "${apiKey}" instead.`
86
148
  });
87
149
  return response;
88
150
  }
89
- async getPages({
90
- siteVersion = import_preview_mode.MakeswiftSiteVersion.Live
91
- } = {}) {
92
- const response = await this.fetch(`v3/pages`, siteVersion);
151
+ getPagesInternal = async ({
152
+ siteVersion = import_preview_mode.MakeswiftSiteVersion.Live,
153
+ ...params
154
+ } = {}) => {
155
+ const queryParams = getPagesQueryParams(params);
156
+ const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion);
93
157
  if (!response.ok) {
94
158
  console.error("Failed to get pages", await response.json());
95
159
  throw new Error(`Failed to get pages with error: "${response.statusText}"`);
96
160
  }
97
- const json = await response.json();
98
- return json;
99
- }
161
+ const result = await response.json();
162
+ const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result);
163
+ if (!parsedResponse.success) {
164
+ throw new Error(
165
+ `Failed to parse getPages response: ${parsedResponse.error.errors.join(", ")}`
166
+ );
167
+ }
168
+ return parsedResponse.data;
169
+ };
170
+ getPages = (0, import_pagination.toIterablePaginationResult)(this.getPagesInternal);
100
171
  async getPage(pathname, {
101
172
  siteVersion = import_preview_mode.MakeswiftSiteVersion.Live,
102
173
  locale: localeInput
@@ -385,6 +456,10 @@ Received "${apiKey}" instead.`
385
456
  );
386
457
  return result.table;
387
458
  }
459
+ /**
460
+ * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap
461
+ * using data from `getPages` instead.
462
+ */
388
463
  async getSitemap({
389
464
  limit = 50,
390
465
  after,
@@ -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'\nimport { CacheData, SerializedLocalizedResourcesMap } 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 Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\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 type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\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 constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime = ReactRuntime }: 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 })\n\n return response\n }\n\n async getPages({\n siteVersion = MakeswiftSiteVersion.Live,\n }: {\n siteVersion?: MakeswiftSiteVersion\n } = {}): Promise<MakeswiftPage[]> {\n const response = await this.fetch(`v3/pages`, siteVersion)\n\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 json = await response.json()\n\n return json\n }\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: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\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 localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\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 cacheData = {\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 })),\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 }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n { siteVersion, locale: localeInput }: { siteVersion: MakeswiftSiteVersion; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\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 // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\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 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":["import_react","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'\nimport { CacheData, SerializedLocalizedResourcesMap } 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 Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\nimport { toIterablePaginationResult } from './utils/pagination'\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', 'createdAt', 'updatedAt', 'publishedAt']).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 type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\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 constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime = ReactRuntime }: 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 })\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: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\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 localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\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 cacheData = {\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 })),\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 }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n { siteVersion, locale: localeInput }: { siteVersion: MakeswiftSiteVersion; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\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 // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\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":["import_react","getResourcesFromElementDescriptors","elementDescriptors","element"]}
@@ -0,0 +1,69 @@
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 async_iterable_exports = {};
20
+ __export(async_iterable_exports, {
21
+ AsyncIterableExt: () => AsyncIterableExt,
22
+ makeAsyncIterableExt: () => makeAsyncIterableExt
23
+ });
24
+ module.exports = __toCommonJS(async_iterable_exports);
25
+ class AsyncIterableExt {
26
+ constructor(iterable) {
27
+ this.iterable = iterable;
28
+ }
29
+ async *[Symbol.asyncIterator]() {
30
+ for await (const value of this.iterable) {
31
+ yield value;
32
+ }
33
+ }
34
+ map(callback) {
35
+ const iterable = this.iterable;
36
+ return makeAsyncIterableExt(async function* () {
37
+ for await (const value of iterable) {
38
+ yield callback(value);
39
+ }
40
+ });
41
+ }
42
+ filter(predicate) {
43
+ const iterable = this.iterable;
44
+ return makeAsyncIterableExt(async function* () {
45
+ for await (const value of iterable) {
46
+ if (predicate(value))
47
+ yield value;
48
+ }
49
+ });
50
+ }
51
+ async toArray() {
52
+ const result = [];
53
+ for await (const item of this) {
54
+ result.push(item);
55
+ }
56
+ return result;
57
+ }
58
+ }
59
+ function makeAsyncIterableExt(generator) {
60
+ return new AsyncIterableExt({
61
+ [Symbol.asyncIterator]: generator
62
+ });
63
+ }
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ AsyncIterableExt,
67
+ makeAsyncIterableExt
68
+ });
69
+ //# sourceMappingURL=async-iterable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/utils/async-iterable.ts"],"sourcesContent":["export class AsyncIterableExt<T> implements AsyncIterable<T> {\n constructor(public readonly iterable: AsyncIterable<T>) {}\n\n async *[Symbol.asyncIterator]() {\n for await (const value of this.iterable) {\n yield value\n }\n }\n\n map<U>(callback: (arg: T) => U) {\n const iterable = this.iterable\n return makeAsyncIterableExt<U>(async function* () {\n for await (const value of iterable) {\n yield callback(value)\n }\n })\n }\n\n filter(predicate: (arg: T) => Boolean) {\n const iterable = this.iterable\n return makeAsyncIterableExt<T>(async function* () {\n for await (const value of iterable) {\n if (predicate(value)) yield value\n }\n })\n }\n\n async toArray() {\n const result: T[] = []\n for await (const item of this) {\n result.push(item)\n }\n return result\n }\n}\n\nexport function makeAsyncIterableExt<T>(generator: () => AsyncIterator<T>) {\n return new AsyncIterableExt<T>({\n [Symbol.asyncIterator]: generator,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,iBAAgD;AAAA,EAC3D,YAA4B,UAA4B;AAA5B;AAAA,EAA6B;AAAA,EAEzD,QAAQ,OAAO,aAAa,IAAI;AAC9B,qBAAiB,SAAS,KAAK,UAAU;AACvC,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAO,UAAyB;AAC9B,UAAM,WAAW,KAAK;AACtB,WAAO,qBAAwB,mBAAmB;AAChD,uBAAiB,SAAS,UAAU;AAClC,cAAM,SAAS,KAAK;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,WAAgC;AACrC,UAAM,WAAW,KAAK;AACtB,WAAO,qBAAwB,mBAAmB;AAChD,uBAAiB,SAAS,UAAU;AAClC,YAAI,UAAU,KAAK;AAAG,gBAAM;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UAAU;AACd,UAAM,SAAc,CAAC;AACrB,qBAAiB,QAAQ,MAAM;AAC7B,aAAO,KAAK,IAAI;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,qBAAwB,WAAmC;AACzE,SAAO,IAAI,iBAAoB;AAAA,IAC7B,CAAC,OAAO,aAAa,GAAG;AAAA,EAC1B,CAAC;AACH;","names":[]}
@@ -0,0 +1,60 @@
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 pagination_exports = {};
20
+ __export(pagination_exports, {
21
+ toIterablePaginationResult: () => toIterablePaginationResult
22
+ });
23
+ module.exports = __toCommonJS(pagination_exports);
24
+ var import_async_iterable = require("./async-iterable");
25
+ function toIterablePaginationResult(fn) {
26
+ return (options) => {
27
+ let __promise;
28
+ function getPromise() {
29
+ if (__promise)
30
+ return __promise;
31
+ __promise = fn(options ?? {});
32
+ return __promise;
33
+ }
34
+ async function* generator() {
35
+ let hasMore = true;
36
+ let after = void 0;
37
+ while (hasMore) {
38
+ const pages = await fn({ ...options, after });
39
+ const { data, hasMore: hasMoreNext } = pages;
40
+ hasMore = hasMoreNext;
41
+ after = data.at(-1)?.id;
42
+ for (const item of data) {
43
+ yield item;
44
+ }
45
+ }
46
+ }
47
+ const result = new import_async_iterable.AsyncIterableExt({
48
+ [Symbol.asyncIterator]: generator
49
+ });
50
+ result.then = (onfulfilled, onrejected) => getPromise().then(onfulfilled, onrejected);
51
+ result.catch = (onrejected) => getPromise().catch(onrejected);
52
+ result.finally = (onfinally) => getPromise().finally(onfinally);
53
+ return result;
54
+ };
55
+ }
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ toIterablePaginationResult
59
+ });
60
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/utils/pagination.ts"],"sourcesContent":["import { AsyncIterableExt } from './async-iterable'\n\ntype PaginationResult<T> = { data: T[]; hasMore: boolean }\ntype IterablePaginationResult<T> = Promise<PaginationResult<T>> & AsyncIterableExt<T>\n\ntype PaginationFunction<Options, R extends { id: any }> = Options extends {\n after?: string\n}\n ? (options: Options) => Promise<PaginationResult<R>>\n : never\n\ntype IterableMethod<Options, R> = Partial<Options> extends Options\n ? (options?: Options) => IterablePaginationResult<R>\n : (options: Options) => IterablePaginationResult<R>\n\nexport function toIterablePaginationResult<Options, R extends { id: string }>(\n fn: PaginationFunction<Options, R>,\n): IterableMethod<Options, R> {\n return (options?: Options): IterablePaginationResult<R> => {\n let __promise: Promise<PaginationResult<R>>\n\n function getPromise() {\n if (__promise) return __promise\n __promise = fn(options ?? ({} as Options))\n return __promise\n }\n\n async function* generator() {\n let hasMore = true\n let after: string | undefined = undefined\n\n while (hasMore) {\n const pages: PaginationResult<R> = await fn({ ...options, after } as Options)\n const { data, hasMore: hasMoreNext } = pages\n hasMore = hasMoreNext\n after = data.at(-1)?.id\n for (const item of data) {\n yield item\n }\n }\n }\n\n const result: Partial<IterablePaginationResult<R>> = new AsyncIterableExt<R>({\n [Symbol.asyncIterator]: generator,\n })\n\n result.then = (onfulfilled?, onrejected?) => getPromise().then(onfulfilled, onrejected)\n result.catch = onrejected => getPromise().catch(onrejected)\n result.finally = onfinally => getPromise().finally(onfinally)\n return result as IterablePaginationResult<R>\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAiC;AAe1B,SAAS,2BACd,IAC4B;AAC5B,SAAO,CAAC,YAAmD;AACzD,QAAI;AAEJ,aAAS,aAAa;AACpB,UAAI;AAAW,eAAO;AACtB,kBAAY,GAAG,WAAY,CAAC,CAAa;AACzC,aAAO;AAAA,IACT;AAEA,oBAAgB,YAAY;AAC1B,UAAI,UAAU;AACd,UAAI,QAA4B;AAEhC,aAAO,SAAS;AACd,cAAM,QAA6B,MAAM,GAAG,EAAE,GAAG,SAAS,MAAM,CAAY;AAC5E,cAAM,EAAE,MAAM,SAAS,YAAY,IAAI;AACvC,kBAAU;AACV,gBAAQ,KAAK,GAAG,EAAE,GAAG;AACrB,mBAAW,QAAQ,MAAM;AACvB,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAA+C,IAAI,uCAAoB;AAAA,MAC3E,CAAC,OAAO,aAAa,GAAG;AAAA,IAC1B,CAAC;AAED,WAAO,OAAO,CAAC,aAAc,eAAgB,WAAW,EAAE,KAAK,aAAa,UAAU;AACtF,WAAO,QAAQ,gBAAc,WAAW,EAAE,MAAM,UAAU;AAC1D,WAAO,UAAU,eAAa,WAAW,EAAE,QAAQ,SAAS;AAC5D,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -13,7 +13,7 @@ async function handler(...args) {
13
13
  const supportsPreviewMode = match(args).with(routeHandlerPattern, () => false).with(apiRoutePattern, () => true).exhaustive();
14
14
  const supportsDraftMode = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
15
15
  const body = {
16
- version: "0.18.1",
16
+ version: "0.19.0-canary.0",
17
17
  previewMode: supportsPreviewMode,
18
18
  draftMode: supportsDraftMode,
19
19
  interactionMode: true,
@@ -18,6 +18,68 @@ import {
18
18
  isElementReference
19
19
  } from "../state/react-page";
20
20
  import { getMakeswiftSiteVersion, MakeswiftSiteVersion } from "./preview-mode";
21
+ import { toIterablePaginationResult } from "./utils/pagination";
22
+ const makeswiftPageResultSchema = z.object({
23
+ id: z.string(),
24
+ path: z.string(),
25
+ title: z.string().nullable(),
26
+ description: z.string().nullable(),
27
+ canonicalUrl: z.string().nullable(),
28
+ socialImageUrl: z.string().nullable(),
29
+ sitemapPriority: z.number().nullable(),
30
+ sitemapFrequency: z.enum(["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]).nullable(),
31
+ createdAt: z.string(),
32
+ updatedAt: z.string(),
33
+ publishedAt: z.string().nullable(),
34
+ isOnline: z.boolean().nullable(),
35
+ excludedFromSearch: z.boolean().nullable(),
36
+ locale: z.string(),
37
+ localizedVariants: z.array(
38
+ z.object({
39
+ locale: z.string(),
40
+ path: z.string()
41
+ })
42
+ )
43
+ });
44
+ const makeswiftGetPagesResultAPISchema = z.object({
45
+ data: z.array(makeswiftPageResultSchema),
46
+ hasMore: z.boolean()
47
+ });
48
+ const makeswiftGetPagesParamsSchema = z.object({
49
+ limit: z.number().optional(),
50
+ after: z.string().optional(),
51
+ sortBy: z.enum(["title", "path", "createdAt", "updatedAt", "publishedAt"]).optional(),
52
+ sortDirection: z.enum(["asc", "desc"]).optional(),
53
+ includeOffline: z.boolean().optional(),
54
+ pathPrefix: z.string().optional(),
55
+ locale: z.string().optional()
56
+ });
57
+ function getPagesQueryParams({
58
+ limit = 20,
59
+ after,
60
+ sortBy,
61
+ sortDirection,
62
+ includeOffline,
63
+ pathPrefix,
64
+ locale
65
+ }) {
66
+ const params = new URLSearchParams();
67
+ if (limit != null)
68
+ params.set("limit", limit.toString());
69
+ if (after != null)
70
+ params.set("after", after);
71
+ if (sortBy != null)
72
+ params.set("sortBy", sortBy);
73
+ if (sortDirection != null)
74
+ params.set("sortDirection", sortDirection);
75
+ if (includeOffline != null)
76
+ params.set("includeOffline", includeOffline.toString());
77
+ if (pathPrefix != null)
78
+ params.set("pathPrefix", pathPrefix);
79
+ if (locale != null)
80
+ params.set("locale", locale);
81
+ return params;
82
+ }
21
83
  const pagePathnameSlicesAPISchema = z.array(
22
84
  z.object({
23
85
  id: z.string(),
@@ -75,17 +137,26 @@ Received "${apiKey}" instead.`
75
137
  });
76
138
  return response;
77
139
  }
78
- async getPages({
79
- siteVersion = MakeswiftSiteVersion.Live
80
- } = {}) {
81
- const response = await this.fetch(`v3/pages`, siteVersion);
140
+ getPagesInternal = async ({
141
+ siteVersion = MakeswiftSiteVersion.Live,
142
+ ...params
143
+ } = {}) => {
144
+ const queryParams = getPagesQueryParams(params);
145
+ const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion);
82
146
  if (!response.ok) {
83
147
  console.error("Failed to get pages", await response.json());
84
148
  throw new Error(`Failed to get pages with error: "${response.statusText}"`);
85
149
  }
86
- const json = await response.json();
87
- return json;
88
- }
150
+ const result = await response.json();
151
+ const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result);
152
+ if (!parsedResponse.success) {
153
+ throw new Error(
154
+ `Failed to parse getPages response: ${parsedResponse.error.errors.join(", ")}`
155
+ );
156
+ }
157
+ return parsedResponse.data;
158
+ };
159
+ getPages = toIterablePaginationResult(this.getPagesInternal);
89
160
  async getPage(pathname, {
90
161
  siteVersion = MakeswiftSiteVersion.Live,
91
162
  locale: localeInput
@@ -374,6 +445,10 @@ Received "${apiKey}" instead.`
374
445
  );
375
446
  return result.table;
376
447
  }
448
+ /**
449
+ * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap
450
+ * using data from `getPages` instead.
451
+ */
377
452
  async getSitemap({
378
453
  limit = 50,
379
454
  after,
@@ -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'\nimport { CacheData, SerializedLocalizedResourcesMap } 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 Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\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 type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\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 constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime = ReactRuntime }: 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 })\n\n return response\n }\n\n async getPages({\n siteVersion = MakeswiftSiteVersion.Live,\n }: {\n siteVersion?: MakeswiftSiteVersion\n } = {}): Promise<MakeswiftPage[]> {\n const response = await this.fetch(`v3/pages`, siteVersion)\n\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 json = await response.json()\n\n return json\n }\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: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\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 localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\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 cacheData = {\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 })),\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 }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n { siteVersion, locale: localeInput }: { siteVersion: MakeswiftSiteVersion; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\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 // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\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 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'\nimport { CacheData, SerializedLocalizedResourcesMap } 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 Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\nimport { toIterablePaginationResult } from './utils/pagination'\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', 'createdAt', 'updatedAt', 'publishedAt']).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 type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\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 constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime = ReactRuntime }: 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 })\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: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\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 localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\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 cacheData = {\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 })),\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 }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n { siteVersion, locale: localeInput }: { siteVersion: MakeswiftSiteVersion; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\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 // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\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"]}
@@ -0,0 +1,44 @@
1
+ class AsyncIterableExt {
2
+ constructor(iterable) {
3
+ this.iterable = iterable;
4
+ }
5
+ async *[Symbol.asyncIterator]() {
6
+ for await (const value of this.iterable) {
7
+ yield value;
8
+ }
9
+ }
10
+ map(callback) {
11
+ const iterable = this.iterable;
12
+ return makeAsyncIterableExt(async function* () {
13
+ for await (const value of iterable) {
14
+ yield callback(value);
15
+ }
16
+ });
17
+ }
18
+ filter(predicate) {
19
+ const iterable = this.iterable;
20
+ return makeAsyncIterableExt(async function* () {
21
+ for await (const value of iterable) {
22
+ if (predicate(value))
23
+ yield value;
24
+ }
25
+ });
26
+ }
27
+ async toArray() {
28
+ const result = [];
29
+ for await (const item of this) {
30
+ result.push(item);
31
+ }
32
+ return result;
33
+ }
34
+ }
35
+ function makeAsyncIterableExt(generator) {
36
+ return new AsyncIterableExt({
37
+ [Symbol.asyncIterator]: generator
38
+ });
39
+ }
40
+ export {
41
+ AsyncIterableExt,
42
+ makeAsyncIterableExt
43
+ };
44
+ //# sourceMappingURL=async-iterable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/utils/async-iterable.ts"],"sourcesContent":["export class AsyncIterableExt<T> implements AsyncIterable<T> {\n constructor(public readonly iterable: AsyncIterable<T>) {}\n\n async *[Symbol.asyncIterator]() {\n for await (const value of this.iterable) {\n yield value\n }\n }\n\n map<U>(callback: (arg: T) => U) {\n const iterable = this.iterable\n return makeAsyncIterableExt<U>(async function* () {\n for await (const value of iterable) {\n yield callback(value)\n }\n })\n }\n\n filter(predicate: (arg: T) => Boolean) {\n const iterable = this.iterable\n return makeAsyncIterableExt<T>(async function* () {\n for await (const value of iterable) {\n if (predicate(value)) yield value\n }\n })\n }\n\n async toArray() {\n const result: T[] = []\n for await (const item of this) {\n result.push(item)\n }\n return result\n }\n}\n\nexport function makeAsyncIterableExt<T>(generator: () => AsyncIterator<T>) {\n return new AsyncIterableExt<T>({\n [Symbol.asyncIterator]: generator,\n })\n}\n"],"mappings":"AAAO,MAAM,iBAAgD;AAAA,EAC3D,YAA4B,UAA4B;AAA5B;AAAA,EAA6B;AAAA,EAEzD,QAAQ,OAAO,aAAa,IAAI;AAC9B,qBAAiB,SAAS,KAAK,UAAU;AACvC,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAO,UAAyB;AAC9B,UAAM,WAAW,KAAK;AACtB,WAAO,qBAAwB,mBAAmB;AAChD,uBAAiB,SAAS,UAAU;AAClC,cAAM,SAAS,KAAK;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,WAAgC;AACrC,UAAM,WAAW,KAAK;AACtB,WAAO,qBAAwB,mBAAmB;AAChD,uBAAiB,SAAS,UAAU;AAClC,YAAI,UAAU,KAAK;AAAG,gBAAM;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UAAU;AACd,UAAM,SAAc,CAAC;AACrB,qBAAiB,QAAQ,MAAM;AAC7B,aAAO,KAAK,IAAI;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,qBAAwB,WAAmC;AACzE,SAAO,IAAI,iBAAoB;AAAA,IAC7B,CAAC,OAAO,aAAa,GAAG;AAAA,EAC1B,CAAC;AACH;","names":[]}
@@ -0,0 +1,36 @@
1
+ import { AsyncIterableExt } from "./async-iterable";
2
+ function toIterablePaginationResult(fn) {
3
+ return (options) => {
4
+ let __promise;
5
+ function getPromise() {
6
+ if (__promise)
7
+ return __promise;
8
+ __promise = fn(options ?? {});
9
+ return __promise;
10
+ }
11
+ async function* generator() {
12
+ let hasMore = true;
13
+ let after = void 0;
14
+ while (hasMore) {
15
+ const pages = await fn({ ...options, after });
16
+ const { data, hasMore: hasMoreNext } = pages;
17
+ hasMore = hasMoreNext;
18
+ after = data.at(-1)?.id;
19
+ for (const item of data) {
20
+ yield item;
21
+ }
22
+ }
23
+ }
24
+ const result = new AsyncIterableExt({
25
+ [Symbol.asyncIterator]: generator
26
+ });
27
+ result.then = (onfulfilled, onrejected) => getPromise().then(onfulfilled, onrejected);
28
+ result.catch = (onrejected) => getPromise().catch(onrejected);
29
+ result.finally = (onfinally) => getPromise().finally(onfinally);
30
+ return result;
31
+ };
32
+ }
33
+ export {
34
+ toIterablePaginationResult
35
+ };
36
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/utils/pagination.ts"],"sourcesContent":["import { AsyncIterableExt } from './async-iterable'\n\ntype PaginationResult<T> = { data: T[]; hasMore: boolean }\ntype IterablePaginationResult<T> = Promise<PaginationResult<T>> & AsyncIterableExt<T>\n\ntype PaginationFunction<Options, R extends { id: any }> = Options extends {\n after?: string\n}\n ? (options: Options) => Promise<PaginationResult<R>>\n : never\n\ntype IterableMethod<Options, R> = Partial<Options> extends Options\n ? (options?: Options) => IterablePaginationResult<R>\n : (options: Options) => IterablePaginationResult<R>\n\nexport function toIterablePaginationResult<Options, R extends { id: string }>(\n fn: PaginationFunction<Options, R>,\n): IterableMethod<Options, R> {\n return (options?: Options): IterablePaginationResult<R> => {\n let __promise: Promise<PaginationResult<R>>\n\n function getPromise() {\n if (__promise) return __promise\n __promise = fn(options ?? ({} as Options))\n return __promise\n }\n\n async function* generator() {\n let hasMore = true\n let after: string | undefined = undefined\n\n while (hasMore) {\n const pages: PaginationResult<R> = await fn({ ...options, after } as Options)\n const { data, hasMore: hasMoreNext } = pages\n hasMore = hasMoreNext\n after = data.at(-1)?.id\n for (const item of data) {\n yield item\n }\n }\n }\n\n const result: Partial<IterablePaginationResult<R>> = new AsyncIterableExt<R>({\n [Symbol.asyncIterator]: generator,\n })\n\n result.then = (onfulfilled?, onrejected?) => getPromise().then(onfulfilled, onrejected)\n result.catch = onrejected => getPromise().catch(onrejected)\n result.finally = onfinally => getPromise().finally(onfinally)\n return result as IterablePaginationResult<R>\n }\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AAe1B,SAAS,2BACd,IAC4B;AAC5B,SAAO,CAAC,YAAmD;AACzD,QAAI;AAEJ,aAAS,aAAa;AACpB,UAAI;AAAW,eAAO;AACtB,kBAAY,GAAG,WAAY,CAAC,CAAa;AACzC,aAAO;AAAA,IACT;AAEA,oBAAgB,YAAY;AAC1B,UAAI,UAAU;AACd,UAAI,QAA4B;AAEhC,aAAO,SAAS;AACd,cAAM,QAA6B,MAAM,GAAG,EAAE,GAAG,SAAS,MAAM,CAAY;AAC5E,cAAM,EAAE,MAAM,SAAS,YAAY,IAAI;AACvC,kBAAU;AACV,gBAAQ,KAAK,GAAG,EAAE,GAAG;AACrB,mBAAW,QAAQ,MAAM;AACvB,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAA+C,IAAI,iBAAoB;AAAA,MAC3E,CAAC,OAAO,aAAa,GAAG;AAAA,IAC1B,CAAC;AAED,WAAO,OAAO,CAAC,aAAc,eAAgB,WAAW,EAAE,KAAK,aAAa,UAAU;AACtF,WAAO,QAAQ,gBAAc,WAAW,EAAE,MAAM,UAAU;AAC1D,WAAO,UAAU,eAAa,WAAW,EAAE,QAAQ,SAAS;AAC5D,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -5,10 +5,183 @@ import { CacheData, SerializedLocalizedResourcesMap } from '../api/react';
5
5
  import { ReactRuntime } from '../runtimes/react';
6
6
  import { Element, ElementData, Data } from '../state/react-page';
7
7
  import { MakeswiftSiteVersion } from './preview-mode';
8
- export type MakeswiftPage = {
8
+ declare const makeswiftPageResultSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ path: z.ZodString;
11
+ title: z.ZodNullable<z.ZodString>;
12
+ description: z.ZodNullable<z.ZodString>;
13
+ canonicalUrl: z.ZodNullable<z.ZodString>;
14
+ socialImageUrl: z.ZodNullable<z.ZodString>;
15
+ sitemapPriority: z.ZodNullable<z.ZodNumber>;
16
+ sitemapFrequency: z.ZodNullable<z.ZodEnum<["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]>>;
17
+ createdAt: z.ZodString;
18
+ updatedAt: z.ZodString;
19
+ publishedAt: z.ZodNullable<z.ZodString>;
20
+ isOnline: z.ZodNullable<z.ZodBoolean>;
21
+ excludedFromSearch: z.ZodNullable<z.ZodBoolean>;
22
+ locale: z.ZodString;
23
+ localizedVariants: z.ZodArray<z.ZodObject<{
24
+ locale: z.ZodString;
25
+ path: z.ZodString;
26
+ }, "strip", z.ZodTypeAny, {
27
+ path: string;
28
+ locale: string;
29
+ }, {
30
+ path: string;
31
+ locale: string;
32
+ }>, "many">;
33
+ }, "strip", z.ZodTypeAny, {
9
34
  id: string;
10
35
  path: string;
11
- };
36
+ title: string | null;
37
+ locale: string;
38
+ description: string | null;
39
+ canonicalUrl: string | null;
40
+ socialImageUrl: string | null;
41
+ sitemapPriority: number | null;
42
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
43
+ createdAt: string;
44
+ updatedAt: string;
45
+ publishedAt: string | null;
46
+ isOnline: boolean | null;
47
+ excludedFromSearch: boolean | null;
48
+ localizedVariants: {
49
+ path: string;
50
+ locale: string;
51
+ }[];
52
+ }, {
53
+ id: string;
54
+ path: string;
55
+ title: string | null;
56
+ locale: string;
57
+ description: string | null;
58
+ canonicalUrl: string | null;
59
+ socialImageUrl: string | null;
60
+ sitemapPriority: number | null;
61
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
62
+ createdAt: string;
63
+ updatedAt: string;
64
+ publishedAt: string | null;
65
+ isOnline: boolean | null;
66
+ excludedFromSearch: boolean | null;
67
+ localizedVariants: {
68
+ path: string;
69
+ locale: string;
70
+ }[];
71
+ }>;
72
+ declare const makeswiftGetPagesResultAPISchema: z.ZodObject<{
73
+ data: z.ZodArray<z.ZodObject<{
74
+ id: z.ZodString;
75
+ path: z.ZodString;
76
+ title: z.ZodNullable<z.ZodString>;
77
+ description: z.ZodNullable<z.ZodString>;
78
+ canonicalUrl: z.ZodNullable<z.ZodString>;
79
+ socialImageUrl: z.ZodNullable<z.ZodString>;
80
+ sitemapPriority: z.ZodNullable<z.ZodNumber>;
81
+ sitemapFrequency: z.ZodNullable<z.ZodEnum<["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]>>;
82
+ createdAt: z.ZodString;
83
+ updatedAt: z.ZodString;
84
+ publishedAt: z.ZodNullable<z.ZodString>;
85
+ isOnline: z.ZodNullable<z.ZodBoolean>;
86
+ excludedFromSearch: z.ZodNullable<z.ZodBoolean>;
87
+ locale: z.ZodString;
88
+ localizedVariants: z.ZodArray<z.ZodObject<{
89
+ locale: z.ZodString;
90
+ path: z.ZodString;
91
+ }, "strip", z.ZodTypeAny, {
92
+ path: string;
93
+ locale: string;
94
+ }, {
95
+ path: string;
96
+ locale: string;
97
+ }>, "many">;
98
+ }, "strip", z.ZodTypeAny, {
99
+ id: string;
100
+ path: string;
101
+ title: string | null;
102
+ locale: string;
103
+ description: string | null;
104
+ canonicalUrl: string | null;
105
+ socialImageUrl: string | null;
106
+ sitemapPriority: number | null;
107
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
108
+ createdAt: string;
109
+ updatedAt: string;
110
+ publishedAt: string | null;
111
+ isOnline: boolean | null;
112
+ excludedFromSearch: boolean | null;
113
+ localizedVariants: {
114
+ path: string;
115
+ locale: string;
116
+ }[];
117
+ }, {
118
+ id: string;
119
+ path: string;
120
+ title: string | null;
121
+ locale: string;
122
+ description: string | null;
123
+ canonicalUrl: string | null;
124
+ socialImageUrl: string | null;
125
+ sitemapPriority: number | null;
126
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
127
+ createdAt: string;
128
+ updatedAt: string;
129
+ publishedAt: string | null;
130
+ isOnline: boolean | null;
131
+ excludedFromSearch: boolean | null;
132
+ localizedVariants: {
133
+ path: string;
134
+ locale: string;
135
+ }[];
136
+ }>, "many">;
137
+ hasMore: z.ZodBoolean;
138
+ }, "strip", z.ZodTypeAny, {
139
+ data: {
140
+ id: string;
141
+ path: string;
142
+ title: string | null;
143
+ locale: string;
144
+ description: string | null;
145
+ canonicalUrl: string | null;
146
+ socialImageUrl: string | null;
147
+ sitemapPriority: number | null;
148
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
149
+ createdAt: string;
150
+ updatedAt: string;
151
+ publishedAt: string | null;
152
+ isOnline: boolean | null;
153
+ excludedFromSearch: boolean | null;
154
+ localizedVariants: {
155
+ path: string;
156
+ locale: string;
157
+ }[];
158
+ }[];
159
+ hasMore: boolean;
160
+ }, {
161
+ data: {
162
+ id: string;
163
+ path: string;
164
+ title: string | null;
165
+ locale: string;
166
+ description: string | null;
167
+ canonicalUrl: string | null;
168
+ socialImageUrl: string | null;
169
+ sitemapPriority: number | null;
170
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
171
+ createdAt: string;
172
+ updatedAt: string;
173
+ publishedAt: string | null;
174
+ isOnline: boolean | null;
175
+ excludedFromSearch: boolean | null;
176
+ localizedVariants: {
177
+ path: string;
178
+ locale: string;
179
+ }[];
180
+ }[];
181
+ hasMore: boolean;
182
+ }>;
183
+ export type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>;
184
+ export type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>;
12
185
  export type MakeswiftPageDocument = {
13
186
  id: string;
14
187
  site: {
@@ -121,9 +294,59 @@ export declare class Makeswift {
121
294
  static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion;
122
295
  constructor(apiKey: string, { apiOrigin, runtime }?: MakeswiftConfig);
123
296
  private fetch;
124
- getPages({ siteVersion, }?: {
125
- siteVersion?: MakeswiftSiteVersion;
126
- }): Promise<MakeswiftPage[]>;
297
+ private getPagesInternal;
298
+ getPages: (options?: ({
299
+ siteVersion?: "Live" | "Working" | undefined;
300
+ } & {
301
+ limit?: number | undefined;
302
+ after?: string | undefined;
303
+ sortBy?: "path" | "title" | "createdAt" | "updatedAt" | "publishedAt" | undefined;
304
+ sortDirection?: "desc" | "asc" | undefined;
305
+ includeOffline?: boolean | undefined;
306
+ pathPrefix?: string | undefined;
307
+ locale?: string | undefined;
308
+ }) | undefined) => Promise<{
309
+ data: {
310
+ id: string;
311
+ path: string;
312
+ title: string | null;
313
+ locale: string;
314
+ description: string | null;
315
+ canonicalUrl: string | null;
316
+ socialImageUrl: string | null;
317
+ sitemapPriority: number | null;
318
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
319
+ createdAt: string;
320
+ updatedAt: string;
321
+ publishedAt: string | null;
322
+ isOnline: boolean | null;
323
+ excludedFromSearch: boolean | null;
324
+ localizedVariants: {
325
+ path: string;
326
+ locale: string;
327
+ }[];
328
+ }[];
329
+ hasMore: boolean;
330
+ }> & import("./utils/async-iterable").AsyncIterableExt<{
331
+ id: string;
332
+ path: string;
333
+ title: string | null;
334
+ locale: string;
335
+ description: string | null;
336
+ canonicalUrl: string | null;
337
+ socialImageUrl: string | null;
338
+ sitemapPriority: number | null;
339
+ sitemapFrequency: "always" | "never" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | null;
340
+ createdAt: string;
341
+ updatedAt: string;
342
+ publishedAt: string | null;
343
+ isOnline: boolean | null;
344
+ excludedFromSearch: boolean | null;
345
+ localizedVariants: {
346
+ path: string;
347
+ locale: string;
348
+ }[];
349
+ }>;
127
350
  getPage(pathname: string, { siteVersion, locale: localeInput, }?: {
128
351
  siteVersion?: MakeswiftSiteVersion;
129
352
  locale?: string;
@@ -148,6 +371,10 @@ export declare class Makeswift {
148
371
  locale?: string;
149
372
  }): Promise<PagePathnameSlice | null>;
150
373
  getTable(tableId: string): Promise<Table | null>;
374
+ /**
375
+ * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap
376
+ * using data from `getPages` instead.
377
+ */
151
378
  getSitemap({ limit, after, pathnamePrefix, locale, }?: {
152
379
  limit?: number;
153
380
  after?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/next/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/next/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.get-pages.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.get-pages.test.d.ts","sourceRoot":"","sources":["../../../../src/next/tests/client.get-pages.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare class AsyncIterableExt<T> implements AsyncIterable<T> {
2
+ readonly iterable: AsyncIterable<T>;
3
+ constructor(iterable: AsyncIterable<T>);
4
+ [Symbol.asyncIterator](): AsyncGenerator<Awaited<T>, void, unknown>;
5
+ map<U>(callback: (arg: T) => U): AsyncIterableExt<U>;
6
+ filter(predicate: (arg: T) => Boolean): AsyncIterableExt<T>;
7
+ toArray(): Promise<T[]>;
8
+ }
9
+ export declare function makeAsyncIterableExt<T>(generator: () => AsyncIterator<T>): AsyncIterableExt<T>;
10
+ //# sourceMappingURL=async-iterable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-iterable.d.ts","sourceRoot":"","sources":["../../../../src/next/utils/async-iterable.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAC9B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;gBAA1B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAE/C,CAAC,MAAM,CAAC,aAAa,CAAC;IAM7B,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IAS9B,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO;IAS/B,OAAO;CAOd;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC,uBAIxE"}
@@ -0,0 +1,17 @@
1
+ import { AsyncIterableExt } from './async-iterable';
2
+ type PaginationResult<T> = {
3
+ data: T[];
4
+ hasMore: boolean;
5
+ };
6
+ type IterablePaginationResult<T> = Promise<PaginationResult<T>> & AsyncIterableExt<T>;
7
+ type PaginationFunction<Options, R extends {
8
+ id: any;
9
+ }> = Options extends {
10
+ after?: string;
11
+ } ? (options: Options) => Promise<PaginationResult<R>> : never;
12
+ type IterableMethod<Options, R> = Partial<Options> extends Options ? (options?: Options) => IterablePaginationResult<R> : (options: Options) => IterablePaginationResult<R>;
13
+ export declare function toIterablePaginationResult<Options, R extends {
14
+ id: string;
15
+ }>(fn: PaginationFunction<Options, R>): IterableMethod<Options, R>;
16
+ export {};
17
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/next/utils/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,KAAK,gBAAgB,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAC1D,KAAK,wBAAwB,CAAC,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAErF,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,IAAI,OAAO,SAAS;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GACG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAClD,KAAK,CAAA;AAET,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,GAC9D,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,wBAAwB,CAAC,CAAC,CAAC,GAClD,CAAC,OAAO,EAAE,OAAO,KAAK,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAErD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC1E,EAAE,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,GACjC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAkC5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makeswift/runtime",
3
- "version": "0.18.1",
3
+ "version": "0.19.0-canary.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist",
@@ -139,8 +139,8 @@
139
139
  "uuid": "^9.0.0",
140
140
  "zod": "^3.21.4",
141
141
  "@makeswift/controls": "0.0.1",
142
- "@makeswift/next-plugin": "0.3.0",
143
- "@makeswift/prop-controllers": "0.3.0"
142
+ "@makeswift/prop-controllers": "0.3.0",
143
+ "@makeswift/next-plugin": "0.3.0"
144
144
  },
145
145
  "devDependencies": {
146
146
  "@emotion/jest": "^11.11.0",
@@ -163,6 +163,7 @@
163
163
  "jest": "^29.7.0",
164
164
  "jest-environment-jsdom": "^29.7.0",
165
165
  "madge": "^6.0.0",
166
+ "msw": "^2.3.1",
166
167
  "next": "14.1.0",
167
168
  "prettier": "^2.5.1",
168
169
  "react": "18.2.0",