From baf930997b76b3d58bbeb46123f4b824d0939085 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Wed, 29 Nov 2023 18:07:03 +0000 Subject: [PATCH 1/6] releasing to npm --- package-lock.json | 176 +++++++++++++----- package.json | 4 +- packages/fastui-bootstrap/LICENSE | 21 +++ packages/fastui-bootstrap/README.md | 3 + packages/fastui-bootstrap/package.json | 23 ++- packages/fastui-bootstrap/tsconfig.json | 2 +- packages/fastui-prebuilt/LICENSE | 21 +++ packages/fastui-prebuilt/README.md | 3 + .../{vanilla => fastui-prebuilt}/index.html | 0 packages/fastui-prebuilt/package.json | 27 +++ .../{vanilla => fastui-prebuilt}/src/App.tsx | 0 .../src/main.scss | 0 .../{vanilla => fastui-prebuilt}/src/main.tsx | 0 .../src/vite-env.d.ts | 0 .../tsconfig.json | 0 .../tsconfig.node.json | 0 .../vite.config.ts | 3 - packages/fastui/LICENSE | 21 +++ packages/fastui/README.md | 8 + packages/fastui/package.json | 19 +- packages/fastui/tsconfig.json | 2 +- packages/vanilla/package.json | 13 -- tsconfig.json | 5 +- 23 files changed, 281 insertions(+), 70 deletions(-) create mode 100644 packages/fastui-bootstrap/LICENSE create mode 100644 packages/fastui-bootstrap/README.md create mode 100644 packages/fastui-prebuilt/LICENSE create mode 100644 packages/fastui-prebuilt/README.md rename packages/{vanilla => fastui-prebuilt}/index.html (100%) create mode 100644 packages/fastui-prebuilt/package.json rename packages/{vanilla => fastui-prebuilt}/src/App.tsx (100%) rename packages/{vanilla => fastui-prebuilt}/src/main.scss (100%) rename packages/{vanilla => fastui-prebuilt}/src/main.tsx (100%) rename packages/{vanilla => fastui-prebuilt}/src/vite-env.d.ts (100%) rename packages/{vanilla => fastui-prebuilt}/tsconfig.json (100%) rename packages/{vanilla => fastui-prebuilt}/tsconfig.node.json (100%) rename packages/{vanilla => fastui-prebuilt}/vite.config.ts (90%) create mode 100644 packages/fastui/LICENSE create mode 100644 packages/fastui/README.md delete mode 100644 packages/vanilla/package.json diff --git a/package-lock.json b/package-lock.json index 9c5434f1..9ea53d0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -347,6 +347,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -363,6 +364,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -379,6 +381,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -395,6 +398,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -411,6 +415,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -427,6 +432,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -443,6 +449,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -459,6 +466,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -475,6 +483,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -491,6 +500,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -507,6 +517,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -523,6 +534,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -539,6 +551,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -555,6 +568,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -571,6 +585,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -587,6 +602,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -603,6 +619,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -619,6 +636,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -635,6 +653,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -651,6 +670,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -667,6 +687,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -683,6 +704,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -847,6 +869,18 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@pydantic/fastui": { + "resolved": "packages/fastui", + "link": true + }, + "node_modules/@pydantic/fastui-bootstrap": { + "resolved": "packages/fastui-bootstrap", + "link": true + }, + "node_modules/@pydantic/fastui-prebuilt": { + "resolved": "packages/fastui-prebuilt", + "link": true + }, "node_modules/@react-aria/ssr": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.0.tgz", @@ -907,6 +941,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -920,6 +955,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -933,6 +969,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -946,6 +983,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -959,6 +997,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -972,6 +1011,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -985,6 +1025,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -998,6 +1039,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1011,6 +1053,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1024,6 +1067,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1037,6 +1081,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1050,6 +1095,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1060,6 +1106,7 @@ "version": "1.3.96", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.96.tgz", "integrity": "sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==", + "dev": true, "hasInstallScript": true, "dependencies": { "@swc/counter": "^0.1.1", @@ -1100,6 +1147,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1115,6 +1163,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1130,6 +1179,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1145,6 +1195,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1160,6 +1211,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1175,6 +1227,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1190,6 +1243,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1205,6 +1259,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1220,6 +1275,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1235,6 +1291,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1246,7 +1303,8 @@ "node_modules/@swc/counter": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==" + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true }, "node_modules/@swc/helpers": { "version": "0.5.3", @@ -1259,7 +1317,8 @@ "node_modules/@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==" + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true }, "node_modules/@types/debug": { "version": "4.1.12", @@ -1307,7 +1366,7 @@ "version": "20.9.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.2.tgz", "integrity": "sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==", - "devOptional": true, + "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -1577,6 +1636,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.5.0.tgz", "integrity": "sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==", + "dev": true, "dependencies": { "@swc/core": "^1.3.96" }, @@ -2347,6 +2407,7 @@ "version": "0.19.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "dev": true, "hasInstallScript": true, "peer": true, "bin": { @@ -2912,10 +2973,6 @@ "resolved": "packages/fastui", "link": true }, - "node_modules/fastui-bootstrap": { - "resolved": "packages/fastui-bootstrap", - "link": true - }, "node_modules/fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -4881,6 +4938,7 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -5179,7 +5237,8 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -5196,6 +5255,7 @@ "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5648,6 +5708,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.5.0.tgz", "integrity": "sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==", + "dev": true, "peer": true, "bin": { "rollup": "dist/bin/rollup" @@ -6207,7 +6268,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "devOptional": true + "dev": true }, "node_modules/unified": { "version": "11.0.4", @@ -6312,10 +6373,6 @@ } } }, - "node_modules/vanilla": { - "resolved": "packages/vanilla", - "link": true - }, "node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", @@ -6347,6 +6404,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.0.tgz", "integrity": "sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==", + "dev": true, "peer": true, "dependencies": { "esbuild": "^0.19.3", @@ -6547,7 +6605,9 @@ } }, "packages/fastui": { - "version": "0.0.0", + "name": "@pydantic/fastui", + "version": "0.0.1", + "license": "MIT", "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", @@ -6561,7 +6621,9 @@ } }, "packages/fastui-bootstrap": { - "version": "0.0.0", + "name": "@pydantic/fastui-bootstrap", + "version": "0.0.1", + "license": "MIT", "dependencies": { "bootstrap": "^5.3.2", "react": "^18.2.0", @@ -6570,22 +6632,26 @@ "sass": "^1.69.5" }, "peerDependencies": { - "fastui": "0.0.0" + "fastui": "0.0.1" } }, - "packages/vanilla": { - "dependencies": { + "packages/fastui-prebuilt": { + "name": "@pydantic/fastui-prebuilt", + "version": "0.0.1", + "license": "MIT", + "devDependencies": { "@vitejs/plugin-react-swc": "^3.3.2", "vite": "^4.4.5" } }, - "packages/vanilla/node_modules/@esbuild/android-arm": { + "packages/fastui-prebuilt/node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -6594,13 +6660,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/android-arm64": { + "packages/fastui-prebuilt/node_modules/@esbuild/android-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -6609,13 +6676,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/android-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/android-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -6624,13 +6692,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/darwin-arm64": { + "packages/fastui-prebuilt/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -6639,13 +6708,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/darwin-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/darwin-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -6654,13 +6724,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/freebsd-arm64": { + "packages/fastui-prebuilt/node_modules/@esbuild/freebsd-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -6669,13 +6740,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/freebsd-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/freebsd-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -6684,13 +6756,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-arm": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6699,13 +6772,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-arm64": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6714,13 +6788,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-ia32": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-ia32": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6729,13 +6804,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-loong64": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-loong64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6744,13 +6820,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-mips64el": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-mips64el": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6759,13 +6836,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-ppc64": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-ppc64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6774,13 +6852,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-riscv64": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-riscv64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6789,13 +6868,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-s390x": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-s390x": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6804,13 +6884,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/linux-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/linux-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -6819,13 +6900,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/netbsd-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/netbsd-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -6834,13 +6916,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/openbsd-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/openbsd-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -6849,13 +6932,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/sunos-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/sunos-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -6864,13 +6948,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/win32-arm64": { + "packages/fastui-prebuilt/node_modules/@esbuild/win32-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -6879,13 +6964,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/win32-ia32": { + "packages/fastui-prebuilt/node_modules/@esbuild/win32-ia32": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -6894,13 +6980,14 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/@esbuild/win32-x64": { + "packages/fastui-prebuilt/node_modules/@esbuild/win32-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -6909,10 +6996,11 @@ "node": ">=12" } }, - "packages/vanilla/node_modules/esbuild": { + "packages/fastui-prebuilt/node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -6945,10 +7033,11 @@ "@esbuild/win32-x64": "0.18.20" } }, - "packages/vanilla/node_modules/rollup": { + "packages/fastui-prebuilt/node_modules/rollup": { "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -6960,10 +7049,11 @@ "fsevents": "~2.3.2" } }, - "packages/vanilla/node_modules/vite": { + "packages/fastui-prebuilt/node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", diff --git a/package.json b/package.json index c77bf985..7032b7a0 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "packages/*" ], "scripts": { - "dev": "npm run --workspace=vanilla dev", - "build": "rm -rf packages-dist && npm run build --workspaces --if-present", + "dev": "npm run --workspace=fastui-prebuilt dev", + "build": "npm run --workspaces prepublishOnly", "typecheck": "npm run --workspaces typecheck", "lint": "eslint packages --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0", "lint-fix": "npm run lint -- --fix", diff --git a/packages/fastui-bootstrap/LICENSE b/packages/fastui-bootstrap/LICENSE new file mode 100644 index 00000000..286f4f19 --- /dev/null +++ b/packages/fastui-bootstrap/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2023 to present Samuel Colvin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/fastui-bootstrap/README.md b/packages/fastui-bootstrap/README.md new file mode 100644 index 00000000..ac01498c --- /dev/null +++ b/packages/fastui-bootstrap/README.md @@ -0,0 +1,3 @@ +# FastUI Bootstrap + +Bootstrap components for FastUI. diff --git a/packages/fastui-bootstrap/package.json b/packages/fastui-bootstrap/package.json index 66ff1598..a35bfe21 100644 --- a/packages/fastui-bootstrap/package.json +++ b/packages/fastui-bootstrap/package.json @@ -1,8 +1,23 @@ { - "name": "fastui-bootstrap", - "version": "0.0.0", + "name": "@pydantic/fastui-bootstrap", + "version": "0.0.1", + "description": "Boostrap renderer for FastUI", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "author": "Samuel Colvin", + "license": "MIT", + "homepage": "https://github.com/samuelcolvin/fastui", + "private": false, + "keywords": [ + "fastui", + "bootstrap", + "jsx", + "typescript", + "react", + "fastapi" + ], "scripts": { - "build": "tsc", + "prepublishOnly": "rm -rf dist && tsc", "typecheck": "tsc --noEmit", "typewatch": "tsc --noEmit --watch" }, @@ -14,6 +29,6 @@ "sass": "^1.69.5" }, "peerDependencies": { - "fastui": "0.0.0" + "fastui": "0.0.1" } } diff --git a/packages/fastui-bootstrap/tsconfig.json b/packages/fastui-bootstrap/tsconfig.json index 54855eec..b1291fdc 100644 --- a/packages/fastui-bootstrap/tsconfig.json +++ b/packages/fastui-bootstrap/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../../packages-dist", + "outDir": "dist", "paths": { "fastui": ["../fastui/src"] } diff --git a/packages/fastui-prebuilt/LICENSE b/packages/fastui-prebuilt/LICENSE new file mode 100644 index 00000000..286f4f19 --- /dev/null +++ b/packages/fastui-prebuilt/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2023 to present Samuel Colvin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/fastui-prebuilt/README.md b/packages/fastui-prebuilt/README.md new file mode 100644 index 00000000..a7024136 --- /dev/null +++ b/packages/fastui-prebuilt/README.md @@ -0,0 +1,3 @@ +# FastUI pre-build + +Pre-built files for FastUI. diff --git a/packages/vanilla/index.html b/packages/fastui-prebuilt/index.html similarity index 100% rename from packages/vanilla/index.html rename to packages/fastui-prebuilt/index.html diff --git a/packages/fastui-prebuilt/package.json b/packages/fastui-prebuilt/package.json new file mode 100644 index 00000000..acf94545 --- /dev/null +++ b/packages/fastui-prebuilt/package.json @@ -0,0 +1,27 @@ +{ + "name": "@pydantic/fastui-prebuilt", + "version": "0.0.1", + "description": "Pre-built files for FastUI", + "main": "dist/index.html", + "author": "Samuel Colvin", + "license": "MIT", + "homepage": "https://github.com/samuelcolvin/fastui", + "private": false, + "keywords": [ + "fastui", + "jsx", + "typescript", + "react", + "fastapi" + ], + "scripts": { + "dev": "vite", + "prepublishOnly": "rm -rf dist && tsc --noEmit && vite build", + "typecheck": "tsc --noEmit", + "typewatch": "tsc --noEmit --watch" + }, + "devDependencies": { + "@vitejs/plugin-react-swc": "^3.3.2", + "vite": "^4.4.5" + } +} diff --git a/packages/vanilla/src/App.tsx b/packages/fastui-prebuilt/src/App.tsx similarity index 100% rename from packages/vanilla/src/App.tsx rename to packages/fastui-prebuilt/src/App.tsx diff --git a/packages/vanilla/src/main.scss b/packages/fastui-prebuilt/src/main.scss similarity index 100% rename from packages/vanilla/src/main.scss rename to packages/fastui-prebuilt/src/main.scss diff --git a/packages/vanilla/src/main.tsx b/packages/fastui-prebuilt/src/main.tsx similarity index 100% rename from packages/vanilla/src/main.tsx rename to packages/fastui-prebuilt/src/main.tsx diff --git a/packages/vanilla/src/vite-env.d.ts b/packages/fastui-prebuilt/src/vite-env.d.ts similarity index 100% rename from packages/vanilla/src/vite-env.d.ts rename to packages/fastui-prebuilt/src/vite-env.d.ts diff --git a/packages/vanilla/tsconfig.json b/packages/fastui-prebuilt/tsconfig.json similarity index 100% rename from packages/vanilla/tsconfig.json rename to packages/fastui-prebuilt/tsconfig.json diff --git a/packages/vanilla/tsconfig.node.json b/packages/fastui-prebuilt/tsconfig.node.json similarity index 100% rename from packages/vanilla/tsconfig.node.json rename to packages/fastui-prebuilt/tsconfig.node.json diff --git a/packages/vanilla/vite.config.ts b/packages/fastui-prebuilt/vite.config.ts similarity index 90% rename from packages/vanilla/vite.config.ts rename to packages/fastui-prebuilt/vite.config.ts index 0ebb08a0..aec8b45c 100644 --- a/packages/vanilla/vite.config.ts +++ b/packages/fastui-prebuilt/vite.config.ts @@ -24,8 +24,5 @@ export default () => { }, server: serverConfig, preview: serverConfig, - build: { - outDir: '../../packages-dist/vanilla', - }, }) } diff --git a/packages/fastui/LICENSE b/packages/fastui/LICENSE new file mode 100644 index 00000000..286f4f19 --- /dev/null +++ b/packages/fastui/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2023 to present Samuel Colvin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/fastui/README.md b/packages/fastui/README.md new file mode 100644 index 00000000..d028e778 --- /dev/null +++ b/packages/fastui/README.md @@ -0,0 +1,8 @@ +# FastUI + +[![CI](https://github.com/samuelcolvin/FastUI/actions/workflows/ci.yml/badge.svg)](https://github.com/samuelcolvin/FastUI/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) +[![pypi](https://img.shields.io/pypi/v/fastui.svg)](https://pypi.python.org/pypi/fastui) +[![versions](https://img.shields.io/pypi/pyversions/fastui.svg)](https://github.com/samuelcolvin/FastUI) +[![license](https://img.shields.io/github/license/samuelcolvin/FastUI.svg)](https://github.com/samuelcolvin/FastUI/blob/main/LICENSE) + +WIP diff --git a/packages/fastui/package.json b/packages/fastui/package.json index 1bb82218..88ee9f4d 100644 --- a/packages/fastui/package.json +++ b/packages/fastui/package.json @@ -1,7 +1,22 @@ { - "name": "fastui", - "version": "0.0.0", + "name": "@pydantic/fastui", + "version": "0.0.1", + "description": "Build better UIs faster.", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "author": "Samuel Colvin", + "license": "MIT", + "homepage": "https://github.com/samuelcolvin/fastui", + "private": false, + "keywords": [ + "fastui", + "jsx", + "typescript", + "react", + "fastapi" + ], "scripts": { + "prepublishOnly": "rm -rf dist && tsc", "typecheck": "tsc --noEmit", "typewatch": "tsc --noEmit --watch" }, diff --git a/packages/fastui/tsconfig.json b/packages/fastui/tsconfig.json index e57e29fc..039e0b4d 100644 --- a/packages/fastui/tsconfig.json +++ b/packages/fastui/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../../packages-dist/fastui" + "outDir": "dist" }, "include": ["src"] } diff --git a/packages/vanilla/package.json b/packages/vanilla/package.json deleted file mode 100644 index c632aad1..00000000 --- a/packages/vanilla/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "vite", - "build": "tsc --noEmit && vite build", - "typecheck": "tsc --noEmit", - "typewatch": "tsc --noEmit --watch" - }, - "dependencies": { - "@vitejs/plugin-react-swc": "^3.3.2", - "vite": "^4.4.5" - } -} diff --git a/tsconfig.json b/tsconfig.json index 9090bf45..26220bc0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,6 +18,9 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true + "noUncheckedIndexedAccess": true, + + /* Output */ + "declaration": true } } From 3d77e4b518a498f244eae17680983e556ae1e3e5 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 30 Nov 2023 12:55:24 +0000 Subject: [PATCH 2/6] fix ci --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d38f2adf..e701d613 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: - run: npm install - run: npm run build - - run: tree packages-dist + - run: tree packages check: # This job does nothing and is only used for the branch protection if: always() From 142564cf4c0127be427bdc8af0bb76b06a294e8e Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 30 Nov 2023 15:30:43 +0000 Subject: [PATCH 3/6] make direct serving work --- Makefile | 4 +- README.md | 6 +- package.json | 2 +- packages/fastui-prebuilt/package.json | 3 +- packages/fastui-prebuilt/vite.config.ts | 11 +++- packages/fastui/src/tools.ts | 10 +++- pyproject.toml | 13 +++-- python/demo/__init__.py | 46 +++++++++++++++ python/demo/main.py | 76 +++++++++++-------------- python/fastui/__init__.py | 29 ++++++++-- python/fastui/dev.py | 9 ++- python/fastui/forms.py | 8 ++- python/requirements/pyproject.txt | 6 +- 13 files changed, 155 insertions(+), 68 deletions(-) diff --git a/Makefile b/Makefile index 305db535..a5d384c5 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ install: update-lockfiles: @echo "Updating requirements files using pip-compile" pip-compile -q --strip-extras -o python/requirements/lint.txt python/requirements/lint.in - pip-compile -q --strip-extras -o python/requirements/pyproject.txt pyproject.toml + pip-compile -q --strip-extras -o python/requirements/pyproject.txt pyproject.toml --extra=fastapi pip install --dry-run -r python/requirements/all.txt .PHONY: format @@ -38,7 +38,7 @@ testcov: test .PHONY: dev dev: - uvicorn python.demo.main:app --reload + uvicorn python.demo:app --reload .PHONY: all all: testcov lint diff --git a/README.md b/README.md index d028e778..bc5fbd4d 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,8 @@ [![versions](https://img.shields.io/pypi/pyversions/fastui.svg)](https://github.com/samuelcolvin/FastUI) [![license](https://img.shields.io/github/license/samuelcolvin/FastUI.svg)](https://github.com/samuelcolvin/FastUI/blob/main/LICENSE) -WIP +Packages: + +- npm: [`@pydantic/fastui`](https://www.npmjs.com/package/@pydantic/fastui) +- npm: [`@pydantic/fastui-bootstrap`](https://www.npmjs.com/package/@pydantic/fastui-bootstrap) +- cdn: [`@pydantic/fastui-prebuilt`](https://www.jsdelivr.com/package/npm/@pydantic/fastui-prebuilt) (via npm package) diff --git a/package.json b/package.json index 7032b7a0..2ab05f4e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "packages/*" ], "scripts": { - "dev": "npm run --workspace=fastui-prebuilt dev", + "dev": "npm run --workspace=@pydantic/fastui-prebuilt dev", "build": "npm run --workspaces prepublishOnly", "typecheck": "npm run --workspaces typecheck", "lint": "eslint packages --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0", diff --git a/packages/fastui-prebuilt/package.json b/packages/fastui-prebuilt/package.json index acf94545..f7435ead 100644 --- a/packages/fastui-prebuilt/package.json +++ b/packages/fastui-prebuilt/package.json @@ -1,8 +1,9 @@ { "name": "@pydantic/fastui-prebuilt", - "version": "0.0.1", + "version": "0.0.3", "description": "Pre-built files for FastUI", "main": "dist/index.html", + "type": "module", "author": "Samuel Colvin", "license": "MIT", "homepage": "https://github.com/samuelcolvin/fastui", diff --git a/packages/fastui-prebuilt/vite.config.ts b/packages/fastui-prebuilt/vite.config.ts index aec8b45c..3a9b3713 100644 --- a/packages/fastui-prebuilt/vite.config.ts +++ b/packages/fastui-prebuilt/vite.config.ts @@ -13,7 +13,6 @@ export default () => { } return defineConfig({ - // @ts-expect-error - no need to type check this file plugins: [react()], resolve: { alias: { @@ -24,5 +23,15 @@ export default () => { }, server: serverConfig, preview: serverConfig, + build: { + sourcemap: true, + rollupOptions: { + output: { + entryFileNames: `assets/[name].js`, + chunkFileNames: `assets/[name].js`, + assetFileNames: `assets/[name].[ext]`, + }, + }, + }, }) } diff --git a/packages/fastui/src/tools.ts b/packages/fastui/src/tools.ts index 3eaae47d..7efb9c6d 100644 --- a/packages/fastui/src/tools.ts +++ b/packages/fastui/src/tools.ts @@ -28,11 +28,17 @@ export function useSSE(url: string, onMessage: (data: any) => void): void { onMessage(data) } source.onerror = (e) => { - setError({ title: 'SSE Error', description: (e as any)?.message }) + setError({ title: 'SSE Error', description: (e as any)?.message || `SSE error, URL '${url}'` }) } - return () => { + const cleanup = () => { + source.onerror = null source.close() } + window.addEventListener('beforeunload', cleanup) + return () => { + window.removeEventListener('beforeunload', cleanup) + cleanup() + } }, [url, setError, onMessage]) } diff --git a/pyproject.toml b/pyproject.toml index 1056209a..9f720463 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ path = "python/fastui/__init__.py" [project] name = "fastui" -description = "Build UIs fast." +description = "Build better UIs faster." authors = [{ name = "Samuel Colvin", email = "s@muelcolvin.com" }] license = "MIT" readme = "README.md" @@ -30,18 +30,19 @@ classifiers = [ 'Programming Language :: Python :: 3.12', "Intended Audience :: Developers", "Intended Audience :: Information Technology", + "Framework :: Pydantic :: 2", + "Framework :: FastAPI", ] requires-python = ">=3.8" -dependencies = [ - "pydantic>=2.5.2", - "fastapi>=0.104.0", -] +dependencies = ["pydantic>=2.5.2"] dynamic = ["version"] +[project.optional-dependencies] +fastapi = ["fastapi>=0.104"] + [project.urls] Homepage = "https://github.com/samuelcolvin/FastUI" - [tool.ruff] line-length = 120 extend-select = ["Q", "RUF100", "UP", "I"] diff --git a/python/demo/__init__.py b/python/demo/__init__.py index e69de29b..8788fd1a 100644 --- a/python/demo/__init__.py +++ b/python/demo/__init__.py @@ -0,0 +1,46 @@ +from __future__ import annotations as _annotations + +import sys +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.responses import HTMLResponse, PlainTextResponse +from fastui import prebuilt_html +from fastui.dev import dev_fastapi_app +from httpx import AsyncClient + +from .main import router as main_router +from .tables import router as table_router + + +@asynccontextmanager +async def lifespan(app_: FastAPI): + async with AsyncClient() as client: + app_.state.httpx_client = client + yield + + +frontend_reload = '--reload' in sys.argv +if frontend_reload: + # dev_fastapi_app reloads in the browser when the Python source changes + app = dev_fastapi_app(lifespan=lifespan) +else: + app = FastAPI(lifespan=lifespan) + +app.include_router(main_router, prefix='/api') +app.include_router(table_router, prefix='/api/table') + + +@app.get('/robots.txt', response_class=PlainTextResponse) +async def robots_txt() -> str: + return 'User-agent: *\nAllow: /' + + +@app.get('/favicon.ico', status_code=404, response_class=PlainTextResponse) +async def favicon_ico() -> str: + return 'page not found' + + +@app.get('/{path:path}') +async def html_landing() -> HTMLResponse: + return HTMLResponse(prebuilt_html(title='FastUI Demo')) diff --git a/python/demo/main.py b/python/demo/main.py index d2f0bb46..7bfe3974 100644 --- a/python/demo/main.py +++ b/python/demo/main.py @@ -1,39 +1,31 @@ from __future__ import annotations as _annotations import asyncio -import sys from collections import defaultdict from datetime import datetime from enum import StrEnum -from typing import Annotated, Literal +from typing import Annotated, AsyncIterable, Literal -from fastapi import FastAPI, UploadFile -from fastui import AnyComponent, FastUI, dev_fastapi_app +from fastapi import APIRouter, Request, UploadFile +from fastapi.responses import StreamingResponse +from fastui import AnyComponent, FastUI from fastui import components as c from fastui.events import GoToEvent, PageEvent from fastui.forms import FormFile, FormResponse, SelectSearchResponse, fastui_form from httpx import AsyncClient from pydantic import BaseModel, Field, SecretStr, field_validator from pydantic_core import PydanticCustomError -from sse_starlette import EventSourceResponse from .shared import navbar -from .tables import router -frontend_reload = '--reload' in sys.argv -if frontend_reload: - # dev_fastapi_app reloads in the browser when the Python source changes - app = dev_fastapi_app() -else: - app = FastAPI() -app.include_router(router, prefix='/api/table') +router = APIRouter() def panel(*components: AnyComponent) -> AnyComponent: return c.Div(class_name='col border rounded m-1 p-2 pb-3', components=list(components)) -@app.get('/api/', response_model=FastUI, response_model_exclude_none=True) +@router.get('/', response_model=FastUI, response_model_exclude_none=True) def api_index() -> list[AnyComponent]: return [ c.PageTitle(text='FastUI Demo'), @@ -100,7 +92,7 @@ def api_index() -> list[AnyComponent]: ] -@app.get('/api/modal', response_model=FastUI, response_model_exclude_none=True) +@router.get('/modal', response_model=FastUI, response_model_exclude_none=True) async def modal_view() -> list[AnyComponent]: await asyncio.sleep(0.5) return [c.Text(text='Modal Content Dynamic')] @@ -144,30 +136,30 @@ def name_validator(cls, v: str) -> str: return v -@app.get('/api/search', response_model=SelectSearchResponse) -async def search_view(q: str) -> SelectSearchResponse: - async with AsyncClient() as client: - path_ends = f'name/{q}' if q else 'all' - r = await client.get(f'https://restcountries.com/v3.1/{path_ends}') - if r.status_code == 404: - options = [] - else: - r.raise_for_status() - data = r.json() - if path_ends == 'all': - # if we got all, filter to the 20 most populous countries - data.sort(key=lambda x: x['population'], reverse=True) - data = data[0:20] - data.sort(key=lambda x: x['name']['common']) - - regions = defaultdict(list) - for co in data: - regions[co['region']].append({'value': co['cca3'], 'label': co['name']['common']}) - options = [{'label': k, 'options': v} for k, v in regions.items()] +@router.get('/search', response_model=SelectSearchResponse) +async def search_view(request: Request, q: str) -> SelectSearchResponse: + path_ends = f'name/{q}' if q else 'all' + client: AsyncClient = request.app.state.httpx_client + r = await client.get(f'https://restcountries.com/v3.1/{path_ends}') + if r.status_code == 404: + options = [] + else: + r.raise_for_status() + data = r.json() + if path_ends == 'all': + # if we got all, filter to the 20 most populous countries + data.sort(key=lambda x: x['population'], reverse=True) + data = data[0:20] + data.sort(key=lambda x: x['name']['common']) + + regions = defaultdict(list) + for co in data: + regions[co['region']].append({'value': co['cca3'], 'label': co['name']['common']}) + options = [{'label': k, 'options': v} for k, v in regions.items()] return SelectSearchResponse(options=options) -@app.get('/api/form/{kind}', response_model=FastUI, response_model_exclude_none=True) +@router.get('/form/{kind}', response_model=FastUI, response_model_exclude_none=True) def form_view(kind: Literal['one', 'two', 'three']) -> list[AnyComponent]: return [ navbar(), @@ -205,7 +197,7 @@ def form_view(kind: Literal['one', 'two', 'three']) -> list[AnyComponent]: ] -@app.get('/api/form/content/{kind}', response_model=FastUI, response_model_exclude_none=True) +@router.get('/form/content/{kind}', response_model=FastUI, response_model_exclude_none=True) def form_content(kind: Literal['one', 'two', 'three']): match kind: case 'one': @@ -240,19 +232,19 @@ def form_content(kind: Literal['one', 'two', 'three']): raise ValueError(f'Invalid kind {kind!r}') -@app.post('/api/form') +@router.post('/form') async def form_post(form: Annotated[MyFormModel, fastui_form(MyFormModel)]) -> FormResponse: return FormResponse(event=GoToEvent(url='/')) -async def sse_generator(): +async def sse_generator() -> AsyncIterable[str]: while True: d = datetime.now() m = FastUI(root=[c.Div(components=[c.Text(text=f'Time {d:%H:%M:%S.%f}'[:-4])], class_name='font-monospace')]) - yield dict(data=m.model_dump_json(by_alias=True)) + yield f'data: {m.model_dump_json(by_alias=True)}\n\n' await asyncio.sleep(0.09) -@app.get('/api/sse', response_class=EventSourceResponse) +@router.get('/sse', response_class=StreamingResponse) async def sse_experiment(): - return EventSourceResponse(sse_generator()) + return StreamingResponse(sse_generator(), media_type='text/event-stream') diff --git a/python/fastui/__init__.py b/python/fastui/__init__.py index 5a53bf7c..26b77ca6 100644 --- a/python/fastui/__init__.py +++ b/python/fastui/__init__.py @@ -1,12 +1,33 @@ -__version__ = '0.0.1' - import pydantic from .components import AnyComponent -from .dev import dev_fastapi_app -__all__ = 'AnyComponent', 'FastUI', 'dev_fastapi_app' +__version__ = '0.2.0' +__all__ = 'AnyComponent', 'FastUI', 'prebuilt_html' class FastUI(pydantic.RootModel): root: list[AnyComponent] + + +_PREBUILT_VERSION = '0.0.3' +_PREBUILT_CDN_URL = f'https://cdn.jsdelivr.net/npm/@pydantic/fastui-prebuilt@{_PREBUILT_VERSION}/dist/assets' + + +def prebuilt_html(title: str = ''): + # language=HTML + return f"""\ + + + + + + {title} + + + + +
+ + +""" diff --git a/python/fastui/dev.py b/python/fastui/dev.py index 284824e3..9b3f5ce9 100644 --- a/python/fastui/dev.py +++ b/python/fastui/dev.py @@ -4,9 +4,12 @@ import typing from contextlib import asynccontextmanager -from fastapi import FastAPI -from fastapi.responses import StreamingResponse -from starlette import types +try: + from fastapi import FastAPI + from fastapi.responses import StreamingResponse + from starlette import types +except ImportError as e: + raise ImportError('fastui.dev requires fastapi to be installed, install with `pip install fastui[fastapi]`') from e def dev_fastapi_app(reload_path: str = '/api/__dev__/reload', **fastapi_kwargs) -> FastAPI: diff --git a/python/fastui/forms.py b/python/fastui/forms.py index f81a612a..21741ccb 100644 --- a/python/fastui/forms.py +++ b/python/fastui/forms.py @@ -5,15 +5,19 @@ from itertools import groupby from operator import itemgetter -import fastapi import pydantic import pydantic_core import typing_extensions from pydantic_core import core_schema -from starlette import datastructures as ds from . import events +try: + import fastapi + from starlette import datastructures as ds +except ImportError as e: + raise ImportError('fastui.dev requires fastapi to be installed, install with `pip install fastui[fastapi]`') from e + if typing.TYPE_CHECKING: from . import json_schema diff --git a/python/requirements/pyproject.txt b/python/requirements/pyproject.txt index ab59d0b7..bb4f7b27 100644 --- a/python/requirements/pyproject.txt +++ b/python/requirements/pyproject.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --output-file=python/requirements/pyproject.txt --strip-extras pyproject.toml +# pip-compile --extra=fastapi --output-file=python/requirements/pyproject.txt --strip-extras pyproject.toml # annotated-types==0.6.0 # via pydantic @@ -14,11 +14,11 @@ fastapi==0.104.1 # via fastui (pyproject.toml) idna==3.4 # via anyio -pydantic==2.5.0b1 +pydantic==2.5.2 # via # fastapi # fastui (pyproject.toml) -pydantic-core==2.14.1 +pydantic-core==2.14.5 # via pydantic sniffio==1.3.0 # via anyio From ab691ea71426dd1ef91173ac5aace5ab01506005 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 30 Nov 2023 15:41:26 +0000 Subject: [PATCH 4/6] match packages versions --- package-lock.json | 12 ++++-------- packages/fastui-bootstrap/package.json | 4 ++-- packages/fastui-prebuilt/package.json | 2 +- packages/fastui-prebuilt/vite.config.ts | 1 + packages/fastui/package.json | 2 +- packages/fastui/src/tools.ts | 7 +++---- python/fastui/__init__.py | 2 +- 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ea53d0c..3db56425 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2969,10 +2969,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fastui": { - "resolved": "packages/fastui", - "link": true - }, "node_modules/fault": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", @@ -6606,7 +6602,7 @@ }, "packages/fastui": { "name": "@pydantic/fastui", - "version": "0.0.1", + "version": "0.0.5", "license": "MIT", "dependencies": { "react": "^18.2.0", @@ -6622,7 +6618,7 @@ }, "packages/fastui-bootstrap": { "name": "@pydantic/fastui-bootstrap", - "version": "0.0.1", + "version": "0.0.5", "license": "MIT", "dependencies": { "bootstrap": "^5.3.2", @@ -6632,12 +6628,12 @@ "sass": "^1.69.5" }, "peerDependencies": { - "fastui": "0.0.1" + "@pydantic/fastui": "0.0.5" } }, "packages/fastui-prebuilt": { "name": "@pydantic/fastui-prebuilt", - "version": "0.0.1", + "version": "0.0.5", "license": "MIT", "devDependencies": { "@vitejs/plugin-react-swc": "^3.3.2", diff --git a/packages/fastui-bootstrap/package.json b/packages/fastui-bootstrap/package.json index a35bfe21..fda46d9b 100644 --- a/packages/fastui-bootstrap/package.json +++ b/packages/fastui-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "@pydantic/fastui-bootstrap", - "version": "0.0.1", + "version": "0.0.6", "description": "Boostrap renderer for FastUI", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -29,6 +29,6 @@ "sass": "^1.69.5" }, "peerDependencies": { - "fastui": "0.0.1" + "@pydantic/fastui": "0.0.5" } } diff --git a/packages/fastui-prebuilt/package.json b/packages/fastui-prebuilt/package.json index f7435ead..d49c0f5d 100644 --- a/packages/fastui-prebuilt/package.json +++ b/packages/fastui-prebuilt/package.json @@ -1,6 +1,6 @@ { "name": "@pydantic/fastui-prebuilt", - "version": "0.0.3", + "version": "0.0.6", "description": "Pre-built files for FastUI", "main": "dist/index.html", "type": "module", diff --git a/packages/fastui-prebuilt/vite.config.ts b/packages/fastui-prebuilt/vite.config.ts index 3a9b3713..a457878e 100644 --- a/packages/fastui-prebuilt/vite.config.ts +++ b/packages/fastui-prebuilt/vite.config.ts @@ -25,6 +25,7 @@ export default () => { preview: serverConfig, build: { sourcemap: true, + // we don't need hashes in URLs, we the URL will change when we release a new version rollupOptions: { output: { entryFileNames: `assets/[name].js`, diff --git a/packages/fastui/package.json b/packages/fastui/package.json index 88ee9f4d..2d2534a6 100644 --- a/packages/fastui/package.json +++ b/packages/fastui/package.json @@ -1,6 +1,6 @@ { "name": "@pydantic/fastui", - "version": "0.0.1", + "version": "0.0.6", "description": "Build better UIs faster.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/fastui/src/tools.ts b/packages/fastui/src/tools.ts index 7efb9c6d..a3d1363d 100644 --- a/packages/fastui/src/tools.ts +++ b/packages/fastui/src/tools.ts @@ -19,8 +19,6 @@ export function useRequest(): (args: RequestArgs) => Promise<[number, any]> { } export function useSSE(url: string, onMessage: (data: any) => void): void { - const { setError } = useContext(ErrorContext) - useEffect(() => { const source = new EventSource(url) source.onmessage = (e) => { @@ -28,7 +26,8 @@ export function useSSE(url: string, onMessage: (data: any) => void): void { onMessage(data) } source.onerror = (e) => { - setError({ title: 'SSE Error', description: (e as any)?.message || `SSE error, URL '${url}'` }) + // we don't raise an error her as this can happen when the server is restarted + console.debug('SSE error', e) } const cleanup = () => { source.onerror = null @@ -39,7 +38,7 @@ export function useSSE(url: string, onMessage: (data: any) => void): void { window.removeEventListener('beforeunload', cleanup) cleanup() } - }, [url, setError, onMessage]) + }, [url, onMessage]) } export interface RequestArgs { diff --git a/python/fastui/__init__.py b/python/fastui/__init__.py index 26b77ca6..299ab9bd 100644 --- a/python/fastui/__init__.py +++ b/python/fastui/__init__.py @@ -10,7 +10,7 @@ class FastUI(pydantic.RootModel): root: list[AnyComponent] -_PREBUILT_VERSION = '0.0.3' +_PREBUILT_VERSION = '0.0.6' _PREBUILT_CDN_URL = f'https://cdn.jsdelivr.net/npm/@pydantic/fastui-prebuilt@{_PREBUILT_VERSION}/dist/assets' From b901e5cea243823eb13f09435c104357859043e9 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 30 Nov 2023 15:48:08 +0000 Subject: [PATCH 5/6] cleanup --- packages/fastui-bootstrap/README.md | 2 +- packages/fastui-prebuilt/vite.config.ts | 1 + packages/fastui/README.md | 7 +------ python/demo/main.py | 4 ++-- python/fastui/__init__.py | 13 +++++++++++++ 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/fastui-bootstrap/README.md b/packages/fastui-bootstrap/README.md index ac01498c..f1ceccee 100644 --- a/packages/fastui-bootstrap/README.md +++ b/packages/fastui-bootstrap/README.md @@ -1,3 +1,3 @@ # FastUI Bootstrap -Bootstrap components for FastUI. +Bootstrap components for [FastUI](https://github.com/samuelcolvin/FastUI). diff --git a/packages/fastui-prebuilt/vite.config.ts b/packages/fastui-prebuilt/vite.config.ts index a457878e..7abb01ad 100644 --- a/packages/fastui-prebuilt/vite.config.ts +++ b/packages/fastui-prebuilt/vite.config.ts @@ -13,6 +13,7 @@ export default () => { } return defineConfig({ + // @ts-expect-error - no need to type check this file plugins: [react()], resolve: { alias: { diff --git a/packages/fastui/README.md b/packages/fastui/README.md index d028e778..c1538695 100644 --- a/packages/fastui/README.md +++ b/packages/fastui/README.md @@ -1,8 +1,3 @@ # FastUI -[![CI](https://github.com/samuelcolvin/FastUI/actions/workflows/ci.yml/badge.svg)](https://github.com/samuelcolvin/FastUI/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) -[![pypi](https://img.shields.io/pypi/v/fastui.svg)](https://pypi.python.org/pypi/fastui) -[![versions](https://img.shields.io/pypi/pyversions/fastui.svg)](https://github.com/samuelcolvin/FastUI) -[![license](https://img.shields.io/github/license/samuelcolvin/FastUI.svg)](https://github.com/samuelcolvin/FastUI/blob/main/LICENSE) - -WIP +[FastUI](https://github.com/samuelcolvin/FastUI) React library. diff --git a/python/demo/main.py b/python/demo/main.py index 7bfe3974..93ae5479 100644 --- a/python/demo/main.py +++ b/python/demo/main.py @@ -245,6 +245,6 @@ async def sse_generator() -> AsyncIterable[str]: await asyncio.sleep(0.09) -@router.get('/sse', response_class=StreamingResponse) -async def sse_experiment(): +@router.get('/sse') +async def sse_experiment() -> StreamingResponse: return StreamingResponse(sse_generator(), media_type='text/event-stream') diff --git a/python/fastui/__init__.py b/python/fastui/__init__.py index 299ab9bd..1f87680f 100644 --- a/python/fastui/__init__.py +++ b/python/fastui/__init__.py @@ -7,6 +7,10 @@ class FastUI(pydantic.RootModel): + """ + The root component of a FastUI application. + """ + root: list[AnyComponent] @@ -15,6 +19,15 @@ class FastUI(pydantic.RootModel): def prebuilt_html(title: str = ''): + """ + Returns a very simple HTML page which includes the FastUI react frontend, loaded from https://www.jsdelivr.com/. + + Arguments: + title: page title + + Returns: + HTML string which can be returned by an endpoint to serve the FastUI frontend. + """ # language=HTML return f"""\ From fc18badf3bfe6725ae18c692ab76edab1d667f13 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Thu, 30 Nov 2023 15:52:29 +0000 Subject: [PATCH 6/6] fix js build --- package-lock.json | 8 ++++---- packages/fastui-bootstrap/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3db56425..4679e20e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6602,7 +6602,7 @@ }, "packages/fastui": { "name": "@pydantic/fastui", - "version": "0.0.5", + "version": "0.0.6", "license": "MIT", "dependencies": { "react": "^18.2.0", @@ -6618,7 +6618,7 @@ }, "packages/fastui-bootstrap": { "name": "@pydantic/fastui-bootstrap", - "version": "0.0.5", + "version": "0.0.6", "license": "MIT", "dependencies": { "bootstrap": "^5.3.2", @@ -6628,12 +6628,12 @@ "sass": "^1.69.5" }, "peerDependencies": { - "@pydantic/fastui": "0.0.5" + "@pydantic/fastui": "0.0.6" } }, "packages/fastui-prebuilt": { "name": "@pydantic/fastui-prebuilt", - "version": "0.0.5", + "version": "0.0.6", "license": "MIT", "devDependencies": { "@vitejs/plugin-react-swc": "^3.3.2", diff --git a/packages/fastui-bootstrap/package.json b/packages/fastui-bootstrap/package.json index fda46d9b..d3dfa6a2 100644 --- a/packages/fastui-bootstrap/package.json +++ b/packages/fastui-bootstrap/package.json @@ -29,6 +29,6 @@ "sass": "^1.69.5" }, "peerDependencies": { - "@pydantic/fastui": "0.0.5" + "@pydantic/fastui": "0.0.6" } }