From e12b3c07536e78b545cc20fed3e3051d8e6aeb00 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 23 Nov 2022 14:50:38 +0100 Subject: [PATCH 1/5] fix: type CanvasData --- apps/designer/app/canvas/canvas.tsx | 3 +-- apps/designer/app/routes/$.tsx | 3 ++- .../app/routes/rest/project.$projectId.tsx | 3 ++- apps/designer/app/shared/db/canvas.server.ts | 5 +---- packages/http-client/package.json | 4 ++-- packages/http-client/src/index.ts | 21 ++----------------- packages/http-client/tsconfig.json | 2 +- packages/project/src/db/types.ts | 3 +++ 8 files changed, 14 insertions(+), 30 deletions(-) diff --git a/apps/designer/app/canvas/canvas.tsx b/apps/designer/app/canvas/canvas.tsx index cab3e73493..e528c8a494 100644 --- a/apps/designer/app/canvas/canvas.tsx +++ b/apps/designer/app/canvas/canvas.tsx @@ -1,6 +1,6 @@ import { useCallback, useMemo, useState } from "react"; import store from "immerhin"; -import type { Build } from "@webstudio-is/project"; +import type { Build, CanvasData } from "@webstudio-is/project"; import { createElementsTree, useAllUserProps, @@ -41,7 +41,6 @@ import { registerContainers } from "./shared/immerhin"; import { usePublishScrollState } from "./shared/use-publish-scroll-state"; import { useDragAndDrop } from "./shared/use-drag-drop"; import { utils } from "@webstudio-is/project"; -import { CanvasData } from "~/shared/db"; import { useSubscribeDesignerReady } from "./shared/use-designer-ready"; import type { Asset } from "@webstudio-is/asset-uploader"; diff --git a/apps/designer/app/routes/$.tsx b/apps/designer/app/routes/$.tsx index ffb53c232d..9b08b63087 100644 --- a/apps/designer/app/routes/$.tsx +++ b/apps/designer/app/routes/$.tsx @@ -6,7 +6,7 @@ import { } from "@remix-run/node"; import { useLoaderData } from "@remix-run/react"; import { InstanceRoot, Root } from "@webstudio-is/react-sdk"; -import { loadCanvasData, type CanvasData } from "~/shared/db"; +import { loadCanvasData } from "~/shared/db"; import env, { type Env } from "~/env.server"; import { sentryException } from "~/shared/sentry"; import { Canvas } from "~/canvas"; @@ -18,6 +18,7 @@ import { } from "~/shared/router-utils"; import { db } from "@webstudio-is/project/server"; import type { DynamicLinksFunction } from "remix-utils"; +import type { CanvasData } from "@webstudio-is/project"; type Data = | (CanvasData & { env: Env; mode: BuildMode }) diff --git a/apps/designer/app/routes/rest/project.$projectId.tsx b/apps/designer/app/routes/rest/project.$projectId.tsx index 3636367a26..fc2f06bbfd 100644 --- a/apps/designer/app/routes/rest/project.$projectId.tsx +++ b/apps/designer/app/routes/rest/project.$projectId.tsx @@ -2,7 +2,8 @@ import { LoaderFunction, json } from "@remix-run/node"; import env from "~/env.server"; import { db } from "@webstudio-is/project/server"; import { sentryException } from "~/shared/sentry"; -import { loadCanvasData, type CanvasData } from "~/shared/db"; +import { loadCanvasData } from "~/shared/db"; +import type { CanvasData } from "@webstudio-is/project"; type PagesDetails = Array; diff --git a/apps/designer/app/shared/db/canvas.server.ts b/apps/designer/app/shared/db/canvas.server.ts index dbbee484bb..a4fb1726b4 100644 --- a/apps/designer/app/shared/db/canvas.server.ts +++ b/apps/designer/app/shared/db/canvas.server.ts @@ -1,10 +1,7 @@ -import { type Data } from "@webstudio-is/react-sdk"; -import type { Project, Build, Page } from "@webstudio-is/project"; +import type { CanvasData, Project } from "@webstudio-is/project"; import { db } from "@webstudio-is/project/server"; import { utils } from "@webstudio-is/project"; -export type CanvasData = Data & { buildId: Build["id"]; page: Page }; - export const loadCanvasData = async ( project: Project, env: "dev" | "prod", diff --git a/packages/http-client/package.json b/packages/http-client/package.json index 3fd785de35..7726721cdd 100644 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -1,6 +1,6 @@ { "name": "@webstudio-is/http-client", - "version": "0.3.0", + "version": "0.3.1", "description": "Webstudio HTTP Client", "author": "Webstudio ", "homepage": "https://webstudio.is", @@ -16,7 +16,7 @@ "@types/isomorphic-fetch": "^0.0.36", "@webstudio-is/jest-config": "*", "@webstudio-is/prisma-client": "*", - "@webstudio-is/react-sdk": "*", + "@webstudio-is/project": "*", "tsup": "^6.1.3", "typescript": "4.7.4" }, diff --git a/packages/http-client/src/index.ts b/packages/http-client/src/index.ts index ed0b1795cd..d4b66a3908 100644 --- a/packages/http-client/src/index.ts +++ b/packages/http-client/src/index.ts @@ -1,22 +1,5 @@ import fetch from "isomorphic-fetch"; -import type { BaseInstance, UserProp } from "@webstudio-is/react-sdk"; -import type { Breakpoint } from "@webstudio-is/css-data"; - -export type Page = { - id: string; - root: [string, string]; -}; -export type Project = { - pages: { - [path: string]: { - page: Page; - tree: BaseInstance; - props: Array | []; - breakpoints: Array | null; - css: string; - }; - }; -}; +import type { CanvasData } from "@webstudio-is/project"; export const loadProject = async ({ apiUrl, @@ -24,7 +7,7 @@ export const loadProject = async ({ }: { apiUrl: string; projectId: string; -}): Promise => { +}): Promise => { try { if (apiUrl === undefined) { throw new Error("Webstudio API URL is required."); diff --git a/packages/http-client/tsconfig.json b/packages/http-client/tsconfig.json index 5429a06abe..64c6a2549e 100644 --- a/packages/http-client/tsconfig.json +++ b/packages/http-client/tsconfig.json @@ -20,7 +20,7 @@ }, { - "path": "../react-sdk" + "path": "../project" } ] } diff --git a/packages/project/src/db/types.ts b/packages/project/src/db/types.ts index aa79e10007..073785828f 100644 --- a/packages/project/src/db/types.ts +++ b/packages/project/src/db/types.ts @@ -4,6 +4,7 @@ import { Build as DbBuild, } from "@webstudio-is/prisma-client"; import type { Asset } from "@webstudio-is/asset-uploader"; +import type { Data } from "@webstudio-is/react-sdk"; export type Project = Omit & { assets?: Array; @@ -76,3 +77,5 @@ export const Pages: z.ZodType<{ homePage: Page; pages: Array }> = export type Pages = z.infer; export type Build = Omit & { pages: Pages }; + +export type CanvasData = Data & { buildId: Build["id"]; page: Page }; From dae9e6de38459c441c82a378329be0829579a4a4 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 23 Nov 2022 15:00:39 +0100 Subject: [PATCH 2/5] fix: type + tests --- packages/http-client/package.json | 2 +- packages/http-client/src/index.test.ts | 16 +++++++++++----- packages/http-client/src/index.ts | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/http-client/package.json b/packages/http-client/package.json index 7726721cdd..6145968a73 100644 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -6,7 +6,7 @@ "homepage": "https://webstudio.is", "scripts": { "dev": "tsup --watch", - "test": "jest", + "test": "NODE_OPTIONS=--experimental-vm-modules jest", "build": "rm -fr lib tsconfig.tsbuildinfo && tsc", "typecheck": "tsc --noEmit", "lint": "eslint ./src --ext .ts,.tsx --max-warnings 0", diff --git a/packages/http-client/src/index.test.ts b/packages/http-client/src/index.test.ts index 3daad19216..d4c7100c53 100644 --- a/packages/http-client/src/index.test.ts +++ b/packages/http-client/src/index.test.ts @@ -16,7 +16,7 @@ describe("getProjectDetails", () => { throw response; } if (typeof response === "object") { - return expect(Object.keys(response.pages).length > 1).toBeTruthy(); + return expect(response.length > 1).toBeTruthy(); } throw new Error("Unexpected response"); }); @@ -29,7 +29,7 @@ describe("getProjectDetails", () => { throw response; } if (typeof response === "object") { - return expect(Object.keys(response.pages).length === 1).toBeTruthy(); + return expect(response.length === 1).toBeTruthy(); } throw new Error("Unexpected response"); }); @@ -45,8 +45,14 @@ describe("getProjectDetails", () => { apiUrl, projectId: notPublishedProjectId, }); - expect(response.toString()).toBe( - `Project ${notPublishedProjectId} not found or not published yet. Please contact us to get help.` - ); + if (response instanceof Error) { + throw response; + } + if (typeof response === "string") { + return expect(response.toString()).toBe( + `Project ${notPublishedProjectId} not found or not published yet. Please contact us to get help.` + ); + } + throw new Error("Unexpected response"); }); }); diff --git a/packages/http-client/src/index.ts b/packages/http-client/src/index.ts index d4b66a3908..7aef686efb 100644 --- a/packages/http-client/src/index.ts +++ b/packages/http-client/src/index.ts @@ -7,7 +7,7 @@ export const loadProject = async ({ }: { apiUrl: string; projectId: string; -}): Promise => { +}): Promise | string> => { try { if (apiUrl === undefined) { throw new Error("Webstudio API URL is required."); From aacfbd9eaf29c2bd9f0cf6e7ff0e02bb8507f68e Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 23 Nov 2022 15:02:04 +0100 Subject: [PATCH 3/5] version++ --- packages/project/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/project/package.json b/packages/project/package.json index eb3af0ac36..3768d3342b 100644 --- a/packages/project/package.json +++ b/packages/project/package.json @@ -1,6 +1,6 @@ { "name": "@webstudio-is/project", - "version": "0.0.3", + "version": "0.0.4", "description": "Webstudio Project", "author": "Webstudio ", "homepage": "https://webstudio.is", From 91239ef9d0dc82ac49e3ff797a770ec3622edaf6 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 23 Nov 2022 15:11:55 +0100 Subject: [PATCH 4/5] no need to double check string --- packages/http-client/src/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-client/src/index.test.ts b/packages/http-client/src/index.test.ts index d4c7100c53..22c0db4c24 100644 --- a/packages/http-client/src/index.test.ts +++ b/packages/http-client/src/index.test.ts @@ -49,7 +49,7 @@ describe("getProjectDetails", () => { throw response; } if (typeof response === "string") { - return expect(response.toString()).toBe( + return expect(response).toBe( `Project ${notPublishedProjectId} not found or not published yet. Please contact us to get help.` ); } From 13e2e6bf56578aa572742508007cab184fcb6d6c Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 23 Nov 2022 15:17:24 +0100 Subject: [PATCH 5/5] remove error --- packages/http-client/src/index.test.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/http-client/src/index.test.ts b/packages/http-client/src/index.test.ts index 22c0db4c24..012e32beb9 100644 --- a/packages/http-client/src/index.test.ts +++ b/packages/http-client/src/index.test.ts @@ -12,9 +12,6 @@ describe("getProjectDetails", () => { apiUrl, projectId: morePagesProjectId, }); - if (response instanceof Error) { - throw response; - } if (typeof response === "object") { return expect(response.length > 1).toBeTruthy(); } @@ -25,9 +22,6 @@ describe("getProjectDetails", () => { apiUrl, projectId: onlyHomeProjectId, }); - if (response instanceof Error) { - throw response; - } if (typeof response === "object") { return expect(response.length === 1).toBeTruthy(); }