@webstudio-is/http-client 0.21.0 → 0.22.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.
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var src_exports = {};
26
+ __export(src_exports, {
27
+ loadProject: () => loadProject
28
+ });
29
+ module.exports = __toCommonJS(src_exports);
30
+ var import_isomorphic_fetch = __toESM(require("isomorphic-fetch"), 1);
31
+ const loadProject = async ({
32
+ apiUrl,
33
+ projectId
34
+ }) => {
35
+ try {
36
+ if (apiUrl === void 0) {
37
+ throw new Error("Webstudio API URL is required.");
38
+ }
39
+ const baseUrl = new URL(apiUrl);
40
+ const projectUrl = new URL(`/rest/project/${projectId}`, baseUrl);
41
+ const projectResponse = await (0, import_isomorphic_fetch.default)(projectUrl);
42
+ const project = await projectResponse.json();
43
+ if (!projectResponse.ok) {
44
+ throw new Error(project);
45
+ }
46
+ return project;
47
+ } catch (error) {
48
+ if (error instanceof Error) {
49
+ return error.message;
50
+ }
51
+ throw error;
52
+ }
53
+ };
package/lib/index.js CHANGED
@@ -1,29 +1,27 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadProject = void 0;
7
- const isomorphic_fetch_1 = __importDefault(require("isomorphic-fetch"));
8
- const loadProject = async ({ apiUrl, projectId, }) => {
9
- try {
10
- if (apiUrl === undefined) {
11
- throw new Error("Webstudio API URL is required.");
12
- }
13
- const baseUrl = new URL(apiUrl);
14
- const projectUrl = new URL(`/rest/project/${projectId}`, baseUrl);
15
- const projectResponse = await (0, isomorphic_fetch_1.default)(projectUrl);
16
- const project = await projectResponse.json();
17
- if (!projectResponse.ok) {
18
- throw new Error(project);
19
- }
20
- return project;
1
+ import fetch from "isomorphic-fetch";
2
+ const loadProject = async ({
3
+ apiUrl,
4
+ projectId
5
+ }) => {
6
+ try {
7
+ if (apiUrl === void 0) {
8
+ throw new Error("Webstudio API URL is required.");
9
+ }
10
+ const baseUrl = new URL(apiUrl);
11
+ const projectUrl = new URL(`/rest/project/${projectId}`, baseUrl);
12
+ const projectResponse = await fetch(projectUrl);
13
+ const project = await projectResponse.json();
14
+ if (!projectResponse.ok) {
15
+ throw new Error(project);
21
16
  }
22
- catch (error) {
23
- if (error instanceof Error) {
24
- return error.message;
25
- }
26
- throw error;
17
+ return project;
18
+ } catch (error) {
19
+ if (error instanceof Error) {
20
+ return error.message;
27
21
  }
22
+ throw error;
23
+ }
24
+ };
25
+ export {
26
+ loadProject
28
27
  };
29
- exports.loadProject = loadProject;
package/package.json CHANGED
@@ -1,45 +1,39 @@
1
1
  {
2
2
  "name": "@webstudio-is/http-client",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Webstudio HTTP Client",
5
5
  "author": "Webstudio <github@webstudio.is>",
6
6
  "homepage": "https://webstudio.is",
7
+ "type": "module",
7
8
  "devDependencies": {
8
9
  "@jest/globals": "^29.3.1",
9
10
  "@types/isomorphic-fetch": "^0.0.36",
10
11
  "jest": "^29.3.1",
11
- "tsup": "^6.1.3",
12
12
  "typescript": "4.7.4",
13
13
  "@webstudio-is/jest-config": "^1.0.2",
14
- "@webstudio-is/prisma-client": "^0.21.0",
15
- "@webstudio-is/project": "^0.21.0",
14
+ "@webstudio-is/prisma-client": "^0.22.0",
15
+ "@webstudio-is/project": "^0.22.0",
16
+ "@webstudio-is/scripts": "^0.0.0",
16
17
  "@webstudio-is/tsconfig": "^1.0.1"
17
18
  },
18
19
  "peerDependencies": {},
19
20
  "dependencies": {
20
21
  "isomorphic-fetch": "^3.0.0"
21
22
  },
22
- "main": "lib/index.js",
23
- "types": "lib/index.d.ts",
23
+ "exports": "./lib/index.js",
24
+ "types": "src/index.ts",
24
25
  "files": [
25
26
  "lib/*",
26
- "README.md",
27
+ "src/*",
27
28
  "!*.test.*"
28
29
  ],
29
30
  "license": "MIT",
30
31
  "private": false,
31
32
  "sideEffects": false,
32
- "tsup": {
33
- "entry": [
34
- "src/index.ts"
35
- ],
36
- "format": "cjs",
37
- "outDir": "lib"
38
- },
39
33
  "scripts": {
40
- "dev": "tsup --watch",
34
+ "dev": "build-package --watch",
35
+ "build": "build-package",
41
36
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
42
- "build": "rm -fr lib tsconfig.tsbuildinfo && tsc",
43
37
  "typecheck": "tsc --noEmit",
44
38
  "lint": "eslint ./src --ext .ts,.tsx --max-warnings 0",
45
39
  "checks": "pnpm typecheck && pnpm lint"
@@ -0,0 +1,54 @@
1
+ import { describe, test, expect } from "@jest/globals";
2
+ import { loadProject } from "./index";
3
+
4
+ const existingProjectId = "675e8af3-48fa-4b18-9ebf-fd2b128865e2";
5
+ const notPublishedProjectId = "7ec397c6-b3d0-4967-9073-9d83623fcf8e";
6
+ const onlyHomeProjectId = "36d6c16f-04a0-45d4-ab1d-aa0ab61eb5b6";
7
+ const morePagesProjectId = existingProjectId;
8
+
9
+ const apiUrl = "http://localhost:3000";
10
+
11
+ describe("getProjectDetails", () => {
12
+ test("include pages", async () => {
13
+ const response = await loadProject({
14
+ apiUrl,
15
+ projectId: morePagesProjectId,
16
+ });
17
+ if (typeof response === "object") {
18
+ return expect(response.length > 1).toBeTruthy();
19
+ }
20
+ throw new Error("Unexpected response");
21
+ });
22
+ test("does not include pages", async () => {
23
+ const response = await loadProject({
24
+ apiUrl,
25
+ projectId: onlyHomeProjectId,
26
+ });
27
+ if (typeof response === "object") {
28
+ return expect(response.length === 1).toBeTruthy();
29
+ }
30
+ throw new Error("Unexpected response");
31
+ });
32
+ test("loads existing project", async () => {
33
+ const response = await loadProject({
34
+ apiUrl,
35
+ projectId: existingProjectId,
36
+ });
37
+ expect(response).toBeTruthy();
38
+ });
39
+ test("loads not published project", async () => {
40
+ const response = await loadProject({
41
+ apiUrl,
42
+ projectId: notPublishedProjectId,
43
+ });
44
+ if (response instanceof Error) {
45
+ throw response;
46
+ }
47
+ if (typeof response === "string") {
48
+ return expect(response).toBe(
49
+ `Project ${notPublishedProjectId} not found or not published yet. Please contact us to get help.`
50
+ );
51
+ }
52
+ throw new Error("Unexpected response");
53
+ });
54
+ });
package/src/index.ts ADDED
@@ -0,0 +1,29 @@
1
+ import fetch from "isomorphic-fetch";
2
+ import type { CanvasData } from "@webstudio-is/project";
3
+
4
+ export const loadProject = async ({
5
+ apiUrl,
6
+ projectId,
7
+ }: {
8
+ apiUrl: string;
9
+ projectId: string;
10
+ }): Promise<Array<CanvasData> | string> => {
11
+ try {
12
+ if (apiUrl === undefined) {
13
+ throw new Error("Webstudio API URL is required.");
14
+ }
15
+ const baseUrl = new URL(apiUrl);
16
+ const projectUrl = new URL(`/rest/project/${projectId}`, baseUrl);
17
+ const projectResponse = await fetch(projectUrl);
18
+ const project = await projectResponse.json();
19
+ if (!projectResponse.ok) {
20
+ throw new Error(project);
21
+ }
22
+ return project;
23
+ } catch (error) {
24
+ if (error instanceof Error) {
25
+ return error.message;
26
+ }
27
+ throw error;
28
+ }
29
+ };
package/lib/index.test.js DELETED
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const globals_1 = require("@jest/globals");
4
- const index_1 = require("./index");
5
- const existingProjectId = "675e8af3-48fa-4b18-9ebf-fd2b128865e2";
6
- const notPublishedProjectId = "7ec397c6-b3d0-4967-9073-9d83623fcf8e";
7
- const onlyHomeProjectId = "36d6c16f-04a0-45d4-ab1d-aa0ab61eb5b6";
8
- const morePagesProjectId = existingProjectId;
9
- const apiUrl = "http://localhost:3000";
10
- (0, globals_1.describe)("getProjectDetails", () => {
11
- (0, globals_1.test)("include pages", async () => {
12
- const response = await (0, index_1.loadProject)({
13
- apiUrl,
14
- projectId: morePagesProjectId,
15
- });
16
- if (typeof response === "object") {
17
- return (0, globals_1.expect)(response.length > 1).toBeTruthy();
18
- }
19
- throw new Error("Unexpected response");
20
- });
21
- (0, globals_1.test)("does not include pages", async () => {
22
- const response = await (0, index_1.loadProject)({
23
- apiUrl,
24
- projectId: onlyHomeProjectId,
25
- });
26
- if (typeof response === "object") {
27
- return (0, globals_1.expect)(response.length === 1).toBeTruthy();
28
- }
29
- throw new Error("Unexpected response");
30
- });
31
- (0, globals_1.test)("loads existing project", async () => {
32
- const response = await (0, index_1.loadProject)({
33
- apiUrl,
34
- projectId: existingProjectId,
35
- });
36
- (0, globals_1.expect)(response).toBeTruthy();
37
- });
38
- (0, globals_1.test)("loads not published project", async () => {
39
- const response = await (0, index_1.loadProject)({
40
- apiUrl,
41
- projectId: notPublishedProjectId,
42
- });
43
- if (response instanceof Error) {
44
- throw response;
45
- }
46
- if (typeof response === "string") {
47
- return (0, globals_1.expect)(response).toBe(`Project ${notPublishedProjectId} not found or not published yet. Please contact us to get help.`);
48
- }
49
- throw new Error("Unexpected response");
50
- });
51
- });