From 1555dd7ab23b393ec3165b1be03f8ba2f20436b0 Mon Sep 17 00:00:00 2001 From: Wanjohi <71614375+wanjohiryan@users.noreply.github.com> Date: Thu, 5 Sep 2024 19:27:33 +0300 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=20refactor:=20Remove=20`apps/docs`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/docs/.eslintignore | 38 ------ apps/docs/.eslintrc.cjs | 42 ------- apps/docs/.eslintrc.js | 16 --- apps/docs/.gitignore | 44 ------- apps/docs/.prettierignore | 37 ------ apps/docs/.vscode/launch.json | 24 ---- apps/docs/.vscode/qwik-city.code-snippets | 36 ------ apps/docs/.vscode/qwik.code-snippets | 78 ------------ apps/docs/README.md | 112 ------------------ .../adapters/cloudflare-pages/vite.config.ts | 15 --- apps/docs/package.json | 50 -------- apps/docs/postcss.config.cjs | 1 - apps/docs/public/_headers | 9 -- apps/docs/public/_redirects | 1 - apps/docs/public/favicon.ico | Bin 365 -> 0 bytes apps/docs/public/favicon.svg | 14 --- apps/docs/public/logo.webp | Bin 242 -> 0 bytes apps/docs/public/manifest.json | 22 ---- .../public/seo/android-chrome-192x192.png | Bin 618 -> 0 bytes .../public/seo/android-chrome-512x512.png | Bin 1289 -> 0 bytes apps/docs/public/seo/apple-touch-icon.png | Bin 625 -> 0 bytes apps/docs/public/seo/banner.png | Bin 60716 -> 0 bytes apps/docs/public/seo/browserconfig.xml | 9 -- apps/docs/public/seo/favicon-16x16.png | Bin 573 -> 0 bytes apps/docs/public/seo/favicon-32x32.png | Bin 608 -> 0 bytes apps/docs/public/seo/favicon.ico | Bin 15086 -> 0 bytes apps/docs/public/seo/mstile-150x150.png | Bin 696 -> 0 bytes apps/docs/public/seo/safari-pinned-tab.svg | 19 --- apps/docs/public/seo/site.webmanifest | 18 --- apps/docs/qwik.env.d.ts | 4 - apps/docs/src/entry.cloudflare-pages.tsx | 24 ---- apps/docs/src/entry.dev.tsx | 17 --- apps/docs/src/entry.preview.tsx | 21 ---- apps/docs/src/entry.ssr.tsx | 33 ------ apps/docs/src/global.css | 0 apps/docs/src/root.tsx | 45 ------- apps/docs/src/routes/index.tsx | 25 ---- apps/docs/src/routes/layout.tsx | 17 --- apps/docs/src/routes/service-worker.ts | 18 --- apps/docs/src/routes/test/index.mdx | 7 -- apps/docs/tailwind.config.js | 12 -- apps/docs/tsconfig.json | 36 ------ apps/docs/vite.config.ts | 106 ----------------- 43 files changed, 950 deletions(-) delete mode 100644 apps/docs/.eslintignore delete mode 100644 apps/docs/.eslintrc.cjs delete mode 100644 apps/docs/.eslintrc.js delete mode 100644 apps/docs/.gitignore delete mode 100644 apps/docs/.prettierignore delete mode 100644 apps/docs/.vscode/launch.json delete mode 100644 apps/docs/.vscode/qwik-city.code-snippets delete mode 100644 apps/docs/.vscode/qwik.code-snippets delete mode 100644 apps/docs/README.md delete mode 100644 apps/docs/adapters/cloudflare-pages/vite.config.ts delete mode 100644 apps/docs/package.json delete mode 100644 apps/docs/postcss.config.cjs delete mode 100644 apps/docs/public/_headers delete mode 100644 apps/docs/public/_redirects delete mode 100644 apps/docs/public/favicon.ico delete mode 100644 apps/docs/public/favicon.svg delete mode 100644 apps/docs/public/logo.webp delete mode 100644 apps/docs/public/manifest.json delete mode 100644 apps/docs/public/seo/android-chrome-192x192.png delete mode 100644 apps/docs/public/seo/android-chrome-512x512.png delete mode 100644 apps/docs/public/seo/apple-touch-icon.png delete mode 100644 apps/docs/public/seo/banner.png delete mode 100644 apps/docs/public/seo/browserconfig.xml delete mode 100644 apps/docs/public/seo/favicon-16x16.png delete mode 100644 apps/docs/public/seo/favicon-32x32.png delete mode 100644 apps/docs/public/seo/favicon.ico delete mode 100644 apps/docs/public/seo/mstile-150x150.png delete mode 100644 apps/docs/public/seo/safari-pinned-tab.svg delete mode 100644 apps/docs/public/seo/site.webmanifest delete mode 100644 apps/docs/qwik.env.d.ts delete mode 100644 apps/docs/src/entry.cloudflare-pages.tsx delete mode 100644 apps/docs/src/entry.dev.tsx delete mode 100644 apps/docs/src/entry.preview.tsx delete mode 100644 apps/docs/src/entry.ssr.tsx delete mode 100644 apps/docs/src/global.css delete mode 100644 apps/docs/src/root.tsx delete mode 100644 apps/docs/src/routes/index.tsx delete mode 100644 apps/docs/src/routes/layout.tsx delete mode 100644 apps/docs/src/routes/service-worker.ts delete mode 100644 apps/docs/src/routes/test/index.mdx delete mode 100644 apps/docs/tailwind.config.js delete mode 100644 apps/docs/tsconfig.json delete mode 100644 apps/docs/vite.config.ts diff --git a/apps/docs/.eslintignore b/apps/docs/.eslintignore deleted file mode 100644 index 1acecc10..00000000 --- a/apps/docs/.eslintignore +++ /dev/null @@ -1,38 +0,0 @@ -**/*.log -**/.DS_Store -*. -.vscode/settings.json -.history -.yarn -bazel-* -bazel-bin -bazel-out -bazel-qwik -bazel-testlogs -dist -dist-dev -lib -lib-types -etc -external -node_modules -temp -tsc-out -tsdoc-metadata.json -target -output -rollup.config.js -build -.cache -.vscode -.rollup.cache -dist -tsconfig.tsbuildinfo -vite.config.ts -*.spec.tsx -*.spec.ts -.netlify -pnpm-lock.yaml -package-lock.json -yarn.lock -server diff --git a/apps/docs/.eslintrc.cjs b/apps/docs/.eslintrc.cjs deleted file mode 100644 index 70dc5d03..00000000 --- a/apps/docs/.eslintrc.cjs +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2021: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:qwik/recommended", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - ecmaVersion: 2021, - sourceType: "module", - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ["@typescript-eslint"], - rules: { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-this-alias": "off", - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/ban-ts-comment": "off", - "prefer-spread": "off", - "no-case-declarations": "off", - "no-console": "off", - "@typescript-eslint/no-unused-vars": ["error"], - "@typescript-eslint/consistent-type-imports": "warn", - "@typescript-eslint/no-unnecessary-condition": "warn", - }, -}; diff --git a/apps/docs/.eslintrc.js b/apps/docs/.eslintrc.js deleted file mode 100644 index 878c3386..00000000 --- a/apps/docs/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - root: true, - extends: [ - "@nestri/eslint-config/qwik.js", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - ecmaVersion: 2021, - sourceType: "module", - ecmaFeatures: { - jsx: true, - }, - } -}; \ No newline at end of file diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore deleted file mode 100644 index c0eb215e..00000000 --- a/apps/docs/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Build -/dist -/lib -/lib-types -/server - -# Development -node_modules -*.local - -# Cache -.cache -.mf -.rollup.cache -tsconfig.tsbuildinfo - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -# Editor -.vscode/* -!.vscode/launch.json -!.vscode/*.code-snippets - -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Yarn -.yarn/* -!.yarn/releases - -# Cloudflare -functions/**/*.js diff --git a/apps/docs/.prettierignore b/apps/docs/.prettierignore deleted file mode 100644 index b62a9681..00000000 --- a/apps/docs/.prettierignore +++ /dev/null @@ -1,37 +0,0 @@ -**/*.log -**/.DS_Store -*. -.vscode/settings.json -.history -.yarn -bazel-* -bazel-bin -bazel-out -bazel-qwik -bazel-testlogs -dist -dist-dev -lib -lib-types -etc -external -node_modules -temp -tsc-out -tsdoc-metadata.json -target -output -rollup.config.js -build -.cache -.vscode -.rollup.cache -tsconfig.tsbuildinfo -vite.config.ts -*.spec.tsx -*.spec.ts -.netlify -pnpm-lock.yaml -package-lock.json -yarn.lock -server diff --git a/apps/docs/.vscode/launch.json b/apps/docs/.vscode/launch.json deleted file mode 100644 index e684cc84..00000000 --- a/apps/docs/.vscode/launch.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Launch Chrome", - "request": "launch", - "type": "chrome", - "url": "http://localhost:5173", - "webRoot": "${workspaceFolder}" - }, - { - "type": "node", - "name": "dev.debug", - "request": "launch", - "skipFiles": ["/**"], - "cwd": "${workspaceFolder}", - "program": "${workspaceFolder}/node_modules/vite/bin/vite.js", - "args": ["--mode", "ssr", "--force"] - } - ] -} diff --git a/apps/docs/.vscode/qwik-city.code-snippets b/apps/docs/.vscode/qwik-city.code-snippets deleted file mode 100644 index 878fcf68..00000000 --- a/apps/docs/.vscode/qwik-city.code-snippets +++ /dev/null @@ -1,36 +0,0 @@ -{ - "onRequest": { - "scope": "javascriptreact,typescriptreact", - "prefix": "qonRequest", - "description": "onRequest function for a route index", - "body": [ - "export const onRequest: RequestHandler = (request) => {", - " $0", - "};", - ], - }, - "loader$": { - "scope": "javascriptreact,typescriptreact", - "prefix": "qloader$", - "description": "loader$()", - "body": ["export const $1 = routeLoader$(() => {", " $0", "});"], - }, - "action$": { - "scope": "javascriptreact,typescriptreact", - "prefix": "qaction$", - "description": "action$()", - "body": ["export const $1 = routeAction$((data) => {", " $0", "});"], - }, - "Full Page": { - "scope": "javascriptreact,typescriptreact", - "prefix": "qpage", - "description": "Simple page component", - "body": [ - "import { component$ } from '@builder.io/qwik';", - "", - "export default component$(() => {", - " $0", - "});", - ], - }, -} diff --git a/apps/docs/.vscode/qwik.code-snippets b/apps/docs/.vscode/qwik.code-snippets deleted file mode 100644 index 62edc825..00000000 --- a/apps/docs/.vscode/qwik.code-snippets +++ /dev/null @@ -1,78 +0,0 @@ -{ - "Qwik component (simple)": { - "scope": "javascriptreact,typescriptreact", - "prefix": "qcomponent$", - "description": "Simple Qwik component", - "body": [ - "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {", - " return <${2:div}>$4", - "});", - ], - }, - "Qwik component (props)": { - "scope": "typescriptreact", - "prefix": "qcomponent$ + props", - "description": "Qwik component w/ props", - "body": [ - "export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {", - " $2", - "}", - "", - "export const $1 = component$<$1Props>((props) => {", - " const ${2:count} = useSignal(0);", - " return (", - " <${3:div} on${4:Click}$={(ev) => {$5}}>", - " $6", - " ", - " );", - "});", - ], - }, - "Qwik signal": { - "scope": "javascriptreact,typescriptreact", - "prefix": "quseSignal", - "description": "useSignal() declaration", - "body": ["const ${1:foo} = useSignal($2);", "$0"], - }, - "Qwik store": { - "scope": "javascriptreact,typescriptreact", - "prefix": "quseStore", - "description": "useStore() declaration", - "body": ["const ${1:state} = useStore({", " $2", "});", "$0"], - }, - "$ hook": { - "scope": "javascriptreact,typescriptreact", - "prefix": "q$", - "description": "$() function hook", - "body": ["$(() => {", " $0", "});", ""], - }, - "useVisibleTask": { - "scope": "javascriptreact,typescriptreact", - "prefix": "quseVisibleTask", - "description": "useVisibleTask$() function hook", - "body": ["useVisibleTask$(({ track }) => {", " $0", "});", ""], - }, - "useTask": { - "scope": "javascriptreact,typescriptreact", - "prefix": "quseTask$", - "description": "useTask$() function hook", - "body": [ - "useTask$(({ track }) => {", - " track(() => $1);", - " $0", - "});", - "", - ], - }, - "useResource": { - "scope": "javascriptreact,typescriptreact", - "prefix": "quseResource$", - "description": "useResource$() declaration", - "body": [ - "const $1 = useResource$(({ track, cleanup }) => {", - " $0", - "});", - "", - ], - }, -} diff --git a/apps/docs/README.md b/apps/docs/README.md deleted file mode 100644 index 385e914d..00000000 --- a/apps/docs/README.md +++ /dev/null @@ -1,112 +0,0 @@ -# Qwik City App ⚡️ - -- [Qwik Docs](https://qwik.dev/) -- [Discord](https://qwik.dev/chat) -- [Qwik GitHub](https://github.com/QwikDev/qwik) -- [@QwikDev](https://twitter.com/QwikDev) -- [Vite](https://vitejs.dev/) - ---- - -## Project Structure - -This project is using Qwik with [QwikCity](https://qwik.dev/qwikcity/overview/). QwikCity is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more. - -Inside your project, you'll see the following directory structure: - -``` -├── public/ -│ └── ... -└── src/ - ├── components/ - │ └── ... - └── routes/ - └── ... -``` - -- `src/routes`: Provides the directory-based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.dev/qwikcity/routing/overview/) for more info. - -- `src/components`: Recommended directory for components. - -- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info. - -## Add Integrations and deployment - -Use the `bun qwik add` command to add additional integrations. Some examples of integrations includes: Cloudflare, Netlify or Express Server, and the [Static Site Generator (SSG)](https://qwik.dev/qwikcity/guides/static-site-generation/). - -```shell -bun qwik add # or `bun qwik add` -``` - -## Development - -Development mode uses [Vite's development server](https://vitejs.dev/). The `dev` command will server-side render (SSR) the output during development. - -```shell -npm start # or `bun start` -``` - -> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build. - -## Preview - -The preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to preview a production build locally and should not be used as a production server. - -```shell -bun preview # or `bun preview` -``` - -## Production - -The production build will generate client and server modules by running both client and server build commands. The build command will use Typescript to run a type check on the source code. - -```shell -bun build # or `bun build` -``` - -## Cloudflare Pages - -Cloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run: - -``` -bun serve -``` - -Then visit [http://localhost:8787/](http://localhost:8787/) - -### Deployments - -[Cloudflare Pages](https://pages.cloudflare.com/) are deployable through their [Git provider integrations](https://developers.cloudflare.com/pages/platform/git-integration/). - -If you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/pages). Next go to your dashboard and follow the [Cloudflare Pages deployment guide](https://developers.cloudflare.com/pages/framework-guides/deploy-anything/). - -Within the projects "Settings" for "Build and deployments", the "Build command" should be `bun build`, and the "Build output directory" should be set to `dist`. - -### Function Invocation Routes - -Cloudflare Page's [function-invocation-routes config](https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes) can be used to include, or exclude, certain paths to be used by the worker functions. Having a `_routes.json` file gives developers more granular control over when your Function is invoked. -This is useful to determine if a page response should be Server-Side Rendered (SSR) or if the response should use a static-site generated (SSG) `index.html` file. - -By default, the Cloudflare pages adaptor _does not_ include a `public/_routes.json` config, but rather it is auto-generated from the build by the Cloudflare adaptor. An example of an auto-generate `dist/_routes.json` would be: - -``` -{ - "include": [ - "/*" - ], - "exclude": [ - "/_headers", - "/_redirects", - "/build/*", - "/favicon.ico", - "/manifest.json", - "/service-worker.js", - "/about" - ], - "version": 1 -} -``` - -In the above example, it's saying _all_ pages should be SSR'd. However, the root static files such as `/favicon.ico` and any static assets in `/build/*` should be excluded from the Functions, and instead treated as a static file. - -In most cases the generated `dist/_routes.json` file is ideal. However, if you need more granular control over each path, you can instead provide you're own `public/_routes.json` file. When the project provides its own `public/_routes.json` file, then the Cloudflare adaptor will not auto-generate the routes config and instead use the committed one within the `public` directory. diff --git a/apps/docs/adapters/cloudflare-pages/vite.config.ts b/apps/docs/adapters/cloudflare-pages/vite.config.ts deleted file mode 100644 index 56cd3d92..00000000 --- a/apps/docs/adapters/cloudflare-pages/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { cloudflarePagesAdapter } from "@builder.io/qwik-city/adapters/cloudflare-pages/vite"; -import { extendConfig } from "@builder.io/qwik-city/vite"; -import baseConfig from "../../vite.config"; - -export default extendConfig(baseConfig, () => { - return { - build: { - ssr: true, - rollupOptions: { - input: ["src/entry.cloudflare-pages.tsx", "@qwik-city-plan"], - }, - }, - plugins: [cloudflarePagesAdapter()], - }; -}); diff --git a/apps/docs/package.json b/apps/docs/package.json deleted file mode 100644 index 2b08ccc9..00000000 --- a/apps/docs/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@nestri/docs", - "description": "Your games. Your rules.", - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "engines-annotation": "Mostly required by sharp which needs a Node-API v9 compatible runtime", - "private": true, - "trustedDependencies": [ - "sharp" - ], - "trustedDependencies-annotation": "Needed for bun to allow running install scripts", - "type": "module", - "scripts": { - "build": "qwik build", - "build.client": "vite build", - "build.preview": "vite build --ssr src/entry.preview.tsx", - "build.server": "vite build -c adapters/cloudflare-pages/vite.config.ts", - "build.types": "tsc --incremental --noEmit", - "deploy": "wrangler pages deploy ./dist", - "dev": "vite --mode ssr", - "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force", - "fmt": "prettier --write .", - "fmt.check": "prettier --check .", - "lint": "eslint \"src/**/*.ts*\"", - "preview": "qwik build preview && vite preview --open", - "serve": "wrangler pages dev ./dist --compatibility-flags=nodejs_als", - "start": "vite --open --mode ssr", - "qwik": "qwik" - }, - "devDependencies": { - "@builder.io/qwik": "^1.8.0", - "@builder.io/qwik-city": "^1.8.0", - "@nestri/eslint-config": "*", - "@nestri/typescript-config": "*", - "@nestri/ui": "*", - "@types/eslint": "8.56.10", - "@types/node": "20.14.11", - "@typescript-eslint/eslint-plugin": "7.16.1", - "@typescript-eslint/parser": "7.16.1", - "eslint": "8.57.0", - "eslint-plugin-qwik": "^1.8.0", - "prettier": "3.3.3", - "typescript": "5.4.5", - "undici": "*", - "vite": "5.3.5", - "vite-tsconfig-paths": "^4.2.1", - "wrangler": "^3.0.0" - } -} diff --git a/apps/docs/postcss.config.cjs b/apps/docs/postcss.config.cjs deleted file mode 100644 index dd1d0abe..00000000 --- a/apps/docs/postcss.config.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("@nestri/ui/postcss.config"); \ No newline at end of file diff --git a/apps/docs/public/_headers b/apps/docs/public/_headers deleted file mode 100644 index 76367924..00000000 --- a/apps/docs/public/_headers +++ /dev/null @@ -1,9 +0,0 @@ -# https://developers.cloudflare.com/pages/platform/headers/ - -/*service-worker.js - Cache-Control: no-store - Content-Type: application/javascript - X-Content-Type-Options: nosniff - -/build/* - Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable diff --git a/apps/docs/public/_redirects b/apps/docs/public/_redirects deleted file mode 100644 index e2746108..00000000 --- a/apps/docs/public/_redirects +++ /dev/null @@ -1 +0,0 @@ -# https://developers.cloudflare.com/pages/platform/redirects/ diff --git a/apps/docs/public/favicon.ico b/apps/docs/public/favicon.ico deleted file mode 100644 index a907041f4fb7a5ad69b186f5cd7f49cf54d57474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?2sFA!!duPX5c3QCr^ zMwA5SrERP@W!#W5tK@$C#nzC#WIuK#uB zEa2;QQxufAaDa6On^5BusThV25-dWkY?0TcFF2Z(aH!;Z{Mvoe=KEyP|EiPU<+z3l z8aKv1h>vOL<=#-pXcjwJY*Skc<4SK+ll_V7XDdZ9o{(5Id71T9=Sf9fbuD0JopA^1 z+(LsK-Y?M;op?p1{=$Tf$|jQ)nI_4n-*)Wdao;O;k&ERfQ^t2K!2%|O+T$mH=IR|d z#(LvMwZipK5%EaQ`>i)_2+k@mYv}Wc)lw3dnRi+#lJTNkL*3=6uNL+rS@huX`z`Yn u6@S-lQO&5+c8^!Rv4cTcJmE1@PMoj0QOm0~mv~?(FnGH9xvX - - - - - diff --git a/apps/docs/public/logo.webp b/apps/docs/public/logo.webp deleted file mode 100644 index 65df71a687680bc7ff80aa74f0afdf2cd05528c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmV z3Mwe@lQTp_2HfK}Sknl&#~-k!VQ`N>U{+8#Afx~Q0MG~kodGIZ07U>kkw%$FC8Z*v zG+symuo4Mk0MtzYKM*#OI0xZh2p4EFKkfniuLuLz{_L;ym=bS+h#=+ezx>)z{CV50 z-4*XPFr8)q0RFqTW#9=7XML}hhn9h~0_lfqW7NwqhYtvJDWfp84AfDxWjB{+fo2jx s(J1<#An&3MrYdJ9htOi)T8irU$qk*q86o~bg_Q!p$iooYf`9-30Q$LJlK=n! diff --git a/apps/docs/public/manifest.json b/apps/docs/public/manifest.json deleted file mode 100644 index cc3871b6..00000000 --- a/apps/docs/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/web-manifest-combined.json", - "name": "Nestri", - "short_name": "Nestri - Your games. Your rules.", - "start_url": ".", - "display": "standalone", - "background_color": "#fafafa", - "description": "Nestri - Your games. Your rules.", - "icons": [ - { - "src": "/seo/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/seo/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#fafafa" -} \ No newline at end of file diff --git a/apps/docs/public/seo/android-chrome-192x192.png b/apps/docs/public/seo/android-chrome-192x192.png deleted file mode 100644 index 28422101bab5a6a8b3b8ea34f9933ab92511e00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 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�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 diff --git a/apps/docs/public/seo/browserconfig.xml b/apps/docs/public/seo/browserconfig.xml deleted file mode 100644 index 7c714d03..00000000 --- a/apps/docs/public/seo/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #ffede5 - - - diff --git a/apps/docs/public/seo/favicon-16x16.png b/apps/docs/public/seo/favicon-16x16.png deleted file mode 100644 index 9f22bfef3ffc9e1b194cef0611e30b93050445fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>K7^r@(X5Qvv3tV^XrHBCBE8OGr6J*^3CUDivndClf2zsgn4$yOapQ_3p^r= z85nOAfH3328#;%8g6t)pzOL*qI7Ea+BY{HBo-U3d5|>-gd2%r*@Hk(zI3Kn5 zf8t$HMeh5XK6p3iC*M6R^+RBC*Foj!pEV@6eqC6#dWQG5Nv4(ynN`0`5t4GdykD>X z4ad|iAMZ8;jZ-agjVMV;EJ?LWE=mPb3`PbehL%=F23E!f+6D$z1_q8d zb$L)UsHgKi%N5z)O$emAGKZCnwXXKr0wL MUHx3vIVCg!0LK5h761SM diff --git a/apps/docs/public/seo/favicon-32x32.png b/apps/docs/public/seo/favicon-32x32.png deleted file mode 100644 index 79e1cce5d950c91806e2fe53e53577a312ac6c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10!ZpAr#1%;Y_h+OC{r^8B zbJkj*L82u=e!&b3tWo8q+(!=l`^9YKKn09R-tI19H5XS%0y&%o z9+AZij5i8Em~r6^okKuD_7YEDSN0biBEll_DSY+kfkIK9E{-7|b}6lzf5ak%i^mm7I|4cqSWNG@(X84r*gyuQM>0F}o zny($_?YSrRQo%0BCYVQcS=_?rFPY^Zm`+7&P8B-72xtj|YKdz^NlIc#s#S7PDv)9@ zGB7gHHL%b%G6*rWv@$ZVGB(sUFt9Q(c)m_;2a1N={FKbJO57TzeV)ex)F276Aviy+ zq&%@Gm7%=6TrV>(yEr+qAXP8FD1G)j8!4co@T!oAlAy$Lg@U5|w9K4Tg_6pGRE5lf zl4J&kiaC!z@o*G|X=t4CKYhmYX%GXmGPhnbx3IFX_hb=fVFi~4lfx;@%9}$JPT#n4 m;>ejJGDp}?H+U@Y(qnifE?Dx($#g2v3IzGa?cM(Q#Si5qV{# zJipl|a)<&`C<7DO0L-s#6ZJ%YRRL8%6;K6!S%FHJkxH0#oJ_l`&Q!u2*ahd{%uyH{ zW6Z^`0eN|F2|~wVjCqaU+I>>}?Y0rs-%b7d&@UZ<2XN;ojEym3meaZ+zXV1dr_>s` z|2fb+3+BKoSaB4_#u&44#gWJH!v)~@;muJP8)MY*gS|dfpI`R0XZ=_G-PPac{?qH{ zSNwVA<1yN{x8pa&?)CVYV~VJ6)%BBf`&WH_rK|5(^;h**{lBUs-OhKaKVGk&*TxGT zzrXNtyrVIz0;+&2U{isxwu$^SeP-|@B2P>Qex7#n@9N(**WD@ZUi0~#Rsa@2<2x;U z%cYwt;F7XS4s+_W!@zKi^StOlW2NX`VxxssewlKz%)-^|vaLi(^W~^UZO$^X6PU zG&^PphS+Mv`XhYjEa058McX$VBr1d9J{k7QiYOceOYsqyE@SjGc RiWw~P%rWEKwBRS~* z{~YHXOMv=?N`m}?86>SNv%h>Q{HGZgtLWpM_xtCZv$u`{Wf_ya-CcxvcE?Nua@b2e zeO=jKaEJ(t$fxktp9c#4@N{tuskrs_j-ybMfq<){gMg#Jhkxy*vSyK%&8gpc|3xoV zn7WJ+s1g-4)L$suZV)?r@3vL)?-JYWs&lXY;4?{EKh>Gf^2r1cv4aQ70P{|$AJ;st ze1`wYjA!XHDo@36GaQ`uRWvPj)Ag|2--2oPfwbk4(~9jfMJK?-M1Pn$Anl)imc)EW zW@OlRB6Md{_mt%_d@rHuK#Ef)!!4cQ+*dO%U$^3pII45ecn^&1W(oeCqOW(l7$~D! z;u=wsl30>zm0Xkxq!^40j7)S5EOd3oE!Zm>f=FR^A+ - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - - diff --git a/apps/docs/public/seo/site.webmanifest b/apps/docs/public/seo/site.webmanifest deleted file mode 100644 index 4853690e..00000000 --- a/apps/docs/public/seo/site.webmanifest +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "Nestri", - "short_name": "Nestri", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icons/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#fafafa", - "background_color": "#fafafa", - "display": "standalone"} diff --git a/apps/docs/qwik.env.d.ts b/apps/docs/qwik.env.d.ts deleted file mode 100644 index 25af92b9..00000000 --- a/apps/docs/qwik.env.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file can be used to add references for global types like `vite/client`. - -// Add global `vite/client` types. For more info, see: https://vitejs.dev/guide/features#client-types -/// diff --git a/apps/docs/src/entry.cloudflare-pages.tsx b/apps/docs/src/entry.cloudflare-pages.tsx deleted file mode 100644 index 510a6309..00000000 --- a/apps/docs/src/entry.cloudflare-pages.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/* - * WHAT IS THIS FILE? - * - * It's the entry point for Cloudflare Pages when building for production. - * - * Learn more about the Cloudflare Pages integration here: - * - https://qwik.dev/docs/deployments/cloudflare-pages/ - * - */ -import { - createQwikCity, - type PlatformCloudflarePages, -} from "@builder.io/qwik-city/middleware/cloudflare-pages"; -import qwikCityPlan from "@qwik-city-plan"; -import { manifest } from "@qwik-client-manifest"; -import render from "./entry.ssr"; - -declare global { - interface QwikCityPlatform extends PlatformCloudflarePages {} -} - -const fetch = createQwikCity({ render, qwikCityPlan, manifest }); - -export { fetch }; diff --git a/apps/docs/src/entry.dev.tsx b/apps/docs/src/entry.dev.tsx deleted file mode 100644 index f421db70..00000000 --- a/apps/docs/src/entry.dev.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* - * WHAT IS THIS FILE? - * - * Development entry point using only client-side modules: - * - Do not use this mode in production! - * - No SSR - * - No portion of the application is pre-rendered on the server. - * - All of the application is running eagerly in the browser. - * - More code is transferred to the browser than in SSR mode. - * - Optimizer/Serialization/Deserialization code is not exercised! - */ -import { render, type RenderOptions } from "@builder.io/qwik"; -import Root from "./root"; - -export default function (opts: RenderOptions) { - return render(document, , opts); -} diff --git a/apps/docs/src/entry.preview.tsx b/apps/docs/src/entry.preview.tsx deleted file mode 100644 index ef0111a8..00000000 --- a/apps/docs/src/entry.preview.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* - * WHAT IS THIS FILE? - * - * It's the bundle entry point for `npm run preview`. - * That is, serving your app built in production mode. - * - * Feel free to modify this file, but don't remove it! - * - * Learn more about Vite's preview command: - * - https://vitejs.dev/config/preview-options.html#preview-options - * - */ -import { createQwikCity } from "@builder.io/qwik-city/middleware/node"; -import qwikCityPlan from "@qwik-city-plan"; -// make sure qwikCityPlan is imported before entry -import render from "./entry.ssr"; - -/** - * The default export is the QwikCity adapter used by Vite preview. - */ -export default createQwikCity({ render, qwikCityPlan }); diff --git a/apps/docs/src/entry.ssr.tsx b/apps/docs/src/entry.ssr.tsx deleted file mode 100644 index e3de5013..00000000 --- a/apps/docs/src/entry.ssr.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/** - * WHAT IS THIS FILE? - * - * SSR entry point, in all cases the application is rendered outside the browser, this - * entry point will be the common one. - * - * - Server (express, cloudflare...) - * - npm run start - * - npm run preview - * - npm run build - * - */ -import { - renderToStream, - type RenderToStreamOptions, -} from "@builder.io/qwik/server"; -import { manifest } from "@qwik-client-manifest"; -import Root from "./root"; - -export default function (opts: RenderToStreamOptions) { - return renderToStream(, { - manifest, - ...opts, - // Use container attributes to set attributes on the html tag. - containerAttributes: { - lang: "en-us", - ...opts.containerAttributes, - }, - serverData: { - ...opts.serverData, - }, - }); -} diff --git a/apps/docs/src/global.css b/apps/docs/src/global.css deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/docs/src/root.tsx b/apps/docs/src/root.tsx deleted file mode 100644 index 2626cab3..00000000 --- a/apps/docs/src/root.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { component$ } from "@builder.io/qwik"; -import { - QwikCityProvider, - RouterOutlet, - ServiceWorkerRegister, -} from "@builder.io/qwik-city"; -import { RouterHead } from "@nestri/ui"; -import { isDev } from "@builder.io/qwik/build"; - -import "@nestri/ui/globals.css"; -import { Fonts } from "@nestri/ui"; - -export default component$(() => { - /** - * The root of a QwikCity site always start with the component, - * immediately followed by the document's and . - * - * Don't remove the `` and `` elements. - */ - - return ( - - - - - - - {!isDev && ( - - )} - - - - - {!isDev && } - - - - ); -}); diff --git a/apps/docs/src/routes/index.tsx b/apps/docs/src/routes/index.tsx deleted file mode 100644 index 4fb7a52a..00000000 --- a/apps/docs/src/routes/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { component$ } from "@builder.io/qwik"; -import type { DocumentHead } from "@builder.io/qwik-city"; - -export default component$(() => { - return ( - <> -

Hi 👋

-
- Can't wait to see what you build with qwik! -
- Happy coding. -
- - ); -}); - -export const head: DocumentHead = { - title: "Welcome to Qwik", - meta: [ - { - name: "description", - content: "Qwik site description", - }, - ], -}; diff --git a/apps/docs/src/routes/layout.tsx b/apps/docs/src/routes/layout.tsx deleted file mode 100644 index f799e429..00000000 --- a/apps/docs/src/routes/layout.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { component$, Slot } from "@builder.io/qwik"; -import type { RequestHandler } from "@builder.io/qwik-city"; - -export const onGet: RequestHandler = async ({ cacheControl }) => { - // Control caching for this request for best performance and to reduce hosting costs: - // https://qwik.dev/docs/caching/ - cacheControl({ - // Always serve a cached response by default, up to a week stale - staleWhileRevalidate: 60 * 60 * 24 * 7, - // Max once every 5 seconds, revalidate on the server to get a fresh version of this page - maxAge: 5, - }); -}; - -export default component$(() => { - return ; -}); diff --git a/apps/docs/src/routes/service-worker.ts b/apps/docs/src/routes/service-worker.ts deleted file mode 100644 index a10ab364..00000000 --- a/apps/docs/src/routes/service-worker.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * WHAT IS THIS FILE? - * - * The service-worker.ts file is used to have state of the art prefetching. - * https://qwik.dev/qwikcity/prefetching/overview/ - * - * Qwik uses a service worker to speed up your site and reduce latency, ie, not used in the traditional way of offline. - * You can also use this file to add more functionality that runs in the service worker. - */ -import { setupServiceWorker } from "@builder.io/qwik-city/service-worker"; - -setupServiceWorker(); - -addEventListener("install", () => self.skipWaiting()); - -addEventListener("activate", () => self.clients.claim()); - -declare const self: ServiceWorkerGlobalScope; diff --git a/apps/docs/src/routes/test/index.mdx b/apps/docs/src/routes/test/index.mdx deleted file mode 100644 index 541e51a4..00000000 --- a/apps/docs/src/routes/test/index.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Hello World Title ---- - -# Hello World Title - -This is a simple hello world component. \ No newline at end of file diff --git a/apps/docs/tailwind.config.js b/apps/docs/tailwind.config.js deleted file mode 100644 index e9547628..00000000 --- a/apps/docs/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// import colors from "tailwindcss/colors"; -import baseConfig from "@nestri/ui/tailwind.config"; -/** @type {import('tailwindcss').Config} */ -module.exports = { - - content: [ - "./{src,components,app}/**/*.{ts,tsx,html}", - "../../packages/ui/src/**/*.{ts,tsx}", - ], - presets: [baseConfig], - plugins: [], -}; \ No newline at end of file diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json deleted file mode 100644 index 3d803260..00000000 --- a/apps/docs/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": "@nestri/typescript-config/base.json", - "compilerOptions": { - "allowJs": true, - "target": "ES2017", - "module": "ES2022", - "lib": ["es2022", "DOM", "WebWorker", "DOM.Iterable"], - "jsx": "react-jsx", - "jsxImportSource": "@builder.io/qwik", - "strict": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "moduleResolution": "Bundler", - "esModuleInterop": true, - "skipLibCheck": true, - "incremental": true, - "isolatedModules": true, - "outDir": "tmp", - "noEmit": true, - "paths": { - "@/*": [ - "./src/*" - ] - } - }, - "files": [ - ".eslintrc.js" - ], - "include": [ - "src", - "./*.d.ts", - "./*.config.ts", - "./*.config.js", - "./*.config.cjs" - ] -} \ No newline at end of file diff --git a/apps/docs/vite.config.ts b/apps/docs/vite.config.ts deleted file mode 100644 index bd9b3f7f..00000000 --- a/apps/docs/vite.config.ts +++ /dev/null @@ -1,106 +0,0 @@ -/** - * This is the base config for vite. - * When building, the adapter config is used which loads this file and extends it. - */ -import { defineConfig, type UserConfig } from "vite"; -import { qwikVite } from "@builder.io/qwik/optimizer"; -import { qwikCity } from "@builder.io/qwik-city/vite"; -import tsconfigPaths from "vite-tsconfig-paths"; -import pkg from "./package.json"; - -type PkgDep = Record; -const { dependencies = {}, devDependencies = {} } = pkg as any as { - dependencies: PkgDep; - devDependencies: PkgDep; - [key: string]: unknown; -}; -errorOnDuplicatesPkgDeps(devDependencies, dependencies); - -/** - * Note that Vite normally starts from `index.html` but the qwikCity plugin makes start at `src/entry.ssr.tsx` instead. - */ -export default defineConfig(({ command, mode }): UserConfig => { - return { - plugins: [qwikCity(), qwikVite(), tsconfigPaths()], - // This tells Vite which dependencies to pre-build in dev mode. - optimizeDeps: { - // Put problematic deps that break bundling here, mostly those with binaries. - // For example ['better-sqlite3'] if you use that in server functions. - exclude: [], - }, - - /** - * This is an advanced setting. It improves the bundling of your server code. To use it, make sure you understand when your consumed packages are dependencies or dev dependencies. (otherwise things will break in production) - */ - // ssr: - // command === "build" && mode === "production" - // ? { - // // All dev dependencies should be bundled in the server build - // noExternal: Object.keys(devDependencies), - // // Anything marked as a dependency will not be bundled - // // These should only be production binary deps (including deps of deps), CLI deps, and their module graph - // // If a dep-of-dep needs to be external, add it here - // // For example, if something uses `bcrypt` but you don't have it as a dep, you can write - // // external: [...Object.keys(dependencies), 'bcrypt'] - // external: Object.keys(dependencies), - // } - // : undefined, - - server: { - headers: { - // Don't cache the server response in dev mode - "Cache-Control": "public, max-age=0", - }, - }, - preview: { - headers: { - // Do cache the server response in preview (non-adapter production build) - "Cache-Control": "public, max-age=600", - }, - }, - }; -}); - -// *** utils *** - -/** - * Function to identify duplicate dependencies and throw an error - * @param {Object} devDependencies - List of development dependencies - * @param {Object} dependencies - List of production dependencies - */ -function errorOnDuplicatesPkgDeps( - devDependencies: PkgDep, - dependencies: PkgDep, -) { - let msg = ""; - // Create an array 'duplicateDeps' by filtering devDependencies. - // If a dependency also exists in dependencies, it is considered a duplicate. - const duplicateDeps = Object.keys(devDependencies).filter( - (dep) => dependencies[dep], - ); - - // include any known qwik packages - const qwikPkg = Object.keys(dependencies).filter((value) => - /qwik/i.test(value), - ); - - // any errors for missing "qwik-city-plan" - // [PLUGIN_ERROR]: Invalid module "@qwik-city-plan" is not a valid package - msg = `Move qwik packages ${qwikPkg.join(", ")} to devDependencies`; - - if (qwikPkg.length > 0) { - throw new Error(msg); - } - - // Format the error message with the duplicates list. - // The `join` function is used to represent the elements of the 'duplicateDeps' array as a comma-separated string. - msg = ` - Warning: The dependency "${duplicateDeps.join(", ")}" is listed in both "devDependencies" and "dependencies". - Please move the duplicated dependencies to "devDependencies" only and remove it from "dependencies" - `; - - // Throw an error with the constructed message. - if (duplicateDeps.length > 0) { - throw new Error(msg); - } -}