Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use dev server backed by hono #194

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
3 changes: 2 additions & 1 deletion .deco/blocks/Header.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,6 @@
"children": []
}
],
"loading": "eager"
"loading": "eager",
"name": "Marcos"
}
17 changes: 17 additions & 0 deletions .deco/blocks/Preview%20site%2Fsections%2FHeader%2FHeader.tsx.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"__resolveType": "site/sections/Header/Header.tsx",
"alerts": [],
"navItems": [],
"searchbar": {
"placeholder": "What are you looking for?",
"loader": {
"data": {
"searches": [],
"products": []
},
"__resolveType": "resolved"
}
},
"logo": {},
"loading": "eager"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"__resolveType": "site/sections/Images/Carousel.tsx",
"images": []
}
4 changes: 1 addition & 3 deletions .deco/blocks/site.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@
},
{
"__resolveType": "analytics/sections/Analytics/DecoAnalytics.tsx"
}
],
"pageSections": [
},
{
"__resolveType": "site/sections/Session.tsx",
"minicart": null,
Expand Down
51 changes: 51 additions & 0 deletions _app.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { asset } from "$fresh/runtime.ts";
import { useScript } from "@deco/deco/hooks";
import { Head } from "@deco/deco/htmx";
import { ComponentChildren } from "preact";

const serviceWorkerScript = () =>
addEventListener("load", () =>
navigator && navigator.serviceWorker &&
navigator.serviceWorker.register("/sw.js?__frsh_c"));

export const Layout = (
{ children, revision, hmrUniqueId }: {
children: ComponentChildren;
revision: string;
hmrUniqueId: string;
},
) => {
return (
<>
{/* Include Icons and manifest */}
{/** @ts-ignore: ignore error */}
<Head>
{/* Enable View Transitions API */}
<style
dangerouslySetInnerHTML={{
__html: `@view-transition { navigation: auto; }`,
}}
/>

{/* Tailwind v3 CSS file */}
<link
href={`/styles.css?revision=${revision}${hmrUniqueId}`}
rel="stylesheet"
/>

{/* Web Manifest */}
<link rel="manifest" href={asset("/site.webmanifest")} />
</Head>

{/* Rest of Preact tree */}
{children}

<script
type="module"
dangerouslySetInnerHTML={{
__html: useScript(serviceWorkerScript),
}}
/>
</>
);
};
6 changes: 3 additions & 3 deletions apps/site.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import type { App as A, AppContext as AC } from "@deco/deco";
import { Section } from "@deco/deco/blocks";
import { rgb24 } from "@std/fmt/colors";
import commerce from "apps/commerce/mod.ts";
import { color as linx } from "apps/linx/mod.ts";
import { color as nuvemshop } from "apps/nuvemshop/mod.ts";
Expand All @@ -6,9 +9,6 @@ import { color as vnda } from "apps/vnda/mod.ts";
import { color as vtex } from "apps/vtex/mod.ts";
import { color as wake } from "apps/wake/mod.ts";
import { Props as WebsiteProps } from "apps/website/mod.ts";
import { Section } from "deco/blocks/section.ts";
import type { App as A, AppContext as AC } from "deco/mod.ts";
import { rgb24 } from "std/fmt/colors.ts";
import manifest, { Manifest } from "../manifest.gen.ts";

export interface Props extends WebsiteProps {
Expand Down
2 changes: 1 addition & 1 deletion components/Session.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Head } from "$fresh/runtime.ts";
import { useScript } from "@deco/deco/hooks";
import { type Person } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { type AppContext } from "../apps/site.ts";
import { MINICART_DRAWER_ID } from "../constants.ts";
import { useComponent } from "../sections/Component.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/header/Bag.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { MINICART_DRAWER_ID } from "../../constants.ts";
import { useId } from "../../sdk/useId.ts";
import Icon from "../ui/Icon.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/header/SignIn.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { clx } from "../../sdk/clx.ts";
import { useId } from "../../sdk/useId.ts";
import Icon from "../ui/Icon.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/minicart/Coupon.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useScript } from "@deco/deco/hooks";
import { MINICART_FORM_ID } from "../../constants.ts";
import { useScript } from "deco/hooks/useScript.ts";

export interface Props {
coupon?: string;
Expand Down
2 changes: 1 addition & 1 deletion components/minicart/Item.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { useScript } from "@deco/deco/hooks";
import { AnalyticsItem } from "apps/commerce/types.ts";
import Image from "apps/website/components/Image.tsx";
import { clx } from "../../sdk/clx.ts";
import { formatPrice } from "../../sdk/format.ts";
import { useScript } from "deco/hooks/useScript.ts";
import Icon from "../ui/Icon.tsx";
import QuantitySelector from "../ui/QuantitySelector.tsx";

Expand Down
2 changes: 1 addition & 1 deletion components/minicart/Minicart.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { AppContext } from "../../apps/site.ts";
import { MINICART_DRAWER_ID, MINICART_FORM_ID } from "../../constants.ts";
import { clx } from "../../sdk/clx.ts";
Expand Down
2 changes: 1 addition & 1 deletion components/product/AddToCartButton.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useScript } from "@deco/deco/hooks";
import { AnalyticsItem, Product } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { JSX } from "preact";
import { clx } from "../../sdk/clx.ts";
import { useId } from "../../sdk/useId.ts";
Expand Down
2 changes: 1 addition & 1 deletion components/product/ProductVariantSelector.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useSection } from "@deco/deco/hooks";
import type { Product } from "apps/commerce/types.ts";
import { useSection } from "deco/hooks/useSection.ts";
import { clx } from "../../sdk/clx.ts";
import { relative } from "../../sdk/url.ts";
import { useId } from "../../sdk/useId.ts";
Expand Down
6 changes: 2 additions & 4 deletions components/search/SearchResult.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { SectionProps } from "@deco/deco";
import { useDevice, useScript, useSection } from "@deco/deco/hooks";
import type { ProductListingPage } from "apps/commerce/types.ts";
import { mapProductToAnalyticsItem } from "apps/commerce/utils/productToAnalyticsItem.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { useSection } from "deco/hooks/useSection.ts";
import { SectionProps } from "deco/mod.ts";
import ProductCard from "../../components/product/ProductCard.tsx";
import Filters from "../../components/search/Filters.tsx";
import Icon from "../../components/ui/Icon.tsx";
Expand All @@ -13,7 +12,6 @@ import { useSendEvent } from "../../sdk/useSendEvent.ts";
import Breadcrumb from "../ui/Breadcrumb.tsx";
import Drawer from "../ui/Drawer.tsx";
import Sort from "./Sort.tsx";
import { useDevice } from "deco/hooks/useDevice.ts";

export interface Layout {
/**
Expand Down
8 changes: 4 additions & 4 deletions components/search/Searchbar/Form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
* no JavaScript is shipped to the browser!
*/

import { asResolved, Resolved } from "@deco/deco";
import { useScript } from "@deco/deco/hooks";
import { Suggestion } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { asResolved, Resolved } from "deco/mod.ts";
import {
SEARCHBAR_INPUT_FORM_ID,
SEARCHBAR_POPUP_ID,
SEARCHBAR_INPUT_FORM_ID,
SEARCHBAR_POPUP_ID,
} from "../../../constants.ts";
import { useId } from "../../../sdk/useId.ts";
import { useComponent } from "../../../sections/Component.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/search/Searchbar/Suggestions.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Resolved } from "@deco/deco";
import { Suggestion } from "apps/commerce/types.ts";
import { Resolved } from "deco/mod.ts";
import type { AppContext } from "../../../apps/site.ts";
import { clx } from "../../../sdk/clx.ts";
import { ComponentProps } from "../../../sections/Component.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/search/Sort.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useScript } from "@deco/deco/hooks";
import { ProductListingPage } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";

const SORT_QUERY_PARAM = "sort";
const PAGE_QUERY_PARAM = "page";
Expand Down
2 changes: 1 addition & 1 deletion components/ui/CategoryBanner.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { SectionProps } from "@deco/deco";
import type { ImageWidget } from "apps/admin/widgets.ts";
import { Picture, Source } from "apps/website/components/Picture.tsx";
import type { SectionProps } from "deco/types.ts";

/**
* @titleBy matcher
Expand Down
2 changes: 1 addition & 1 deletion components/ui/Drawer.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { type ComponentChildren } from "preact";
import { clx } from "../../sdk/clx.ts";
import { useId } from "../../sdk/useId.ts";
Expand Down
2 changes: 1 addition & 1 deletion components/ui/Modal.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { ComponentChildren } from "preact";
import { useId } from "../../sdk/useId.ts";

Expand Down
2 changes: 1 addition & 1 deletion components/ui/QuantitySelector.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { type JSX } from "preact";
import { clx } from "../../sdk/clx.ts";
import { useId } from "../../sdk/useId.ts";
Expand Down
2 changes: 1 addition & 1 deletion components/ui/Slider.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import type { JSX } from "preact";
import { clx } from "../../sdk/clx.ts";

Expand Down
2 changes: 1 addition & 1 deletion components/user/Provider.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useScript } from "@deco/deco/hooks";
import { Person } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { USER_ID } from "../../constants.ts";

const onLoad = (jsonID: string) => {
Expand Down
2 changes: 1 addition & 1 deletion components/wishlist/Provider.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useScript } from "deco/hooks/useScript.ts";
import { useScript } from "@deco/deco/hooks";
import { AppContext } from "../../apps/site.ts";
import { WISHLIST_FORM_ID } from "../../constants.ts";
import { useComponent } from "../../sections/Component.tsx";
Expand Down
2 changes: 1 addition & 1 deletion components/wishlist/WishlistButton.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useScript } from "@deco/deco/hooks";
import { AnalyticsItem } from "apps/commerce/types.ts";
import { useScript } from "deco/hooks/useScript.ts";
import { clx } from "../../sdk/clx.ts";
import { useId } from "../../sdk/useId.ts";
import { useSendEvent } from "../../sdk/useSendEvent.ts";
Expand Down
4 changes: 2 additions & 2 deletions components/wishlist/WishlistGallery.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SectionProps } from "deco/mod.ts";
import { SectionProps } from "@deco/deco";
import SearchResult, {
Props as SearchResultProps,
Props as SearchResultProps,
} from "../search/SearchResult.tsx";

export type Props = SearchResultProps;
Expand Down
30 changes: 20 additions & 10 deletions deno.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,38 @@
{
"imports": {
"deco/": "https://cdn.jsdelivr.net/gh/deco-cx/[email protected]/",
"apps/": "https://cdn.jsdelivr.net/gh/deco-cx/[email protected]/",
"$fresh/": "https://deno.land/x/[email protected]/",
"preact": "https://esm.sh/[email protected]",
"preact/": "https://esm.sh/[email protected]/",
"preact-render-to-string": "https://esm.sh/*[email protected]",
"@deco/deco": "jsr:@deco/[email protected]",
"@preact/signals": "https://esm.sh/*@preact/[email protected]",
"@preact/signals-core": "https://esm.sh/*@preact/[email protected]",
"std/": "https://deno.land/[email protected]/",
"daisyui": "npm:[email protected]"
"@deco/durable": "jsr:@deco/durable@^0.5.3",
"@std/assert": "jsr:@std/assert@^1.0.2",
"@std/async": "jsr:@std/async@^1.0.3",
"@std/crypto": "jsr:@std/crypto@^1.0.2",
"@std/encoding": "jsr:@std/encoding@^1.0.1",
"@std/fmt": "jsr:@std/fmt@^1.0.0",
"@std/http": "jsr:@std/http@^1.0.2",
"@std/media-types": "jsr:@std/media-types@^1.0.2",
"@std/path": "jsr:@std/path@^1.0.2",
"apps/": "https://denopkg.com/deco-cx/apps@2dfb5a43753691dc4bb6062945cb602b55a02482/",
"daisyui": "npm:[email protected]",
"partytown/": "https://deno.land/x/[email protected]/",
"preact": "npm:[email protected]",
"preact-render-to-string": "https://esm.sh/*[email protected]"
},
"tasks": {
"start": "deno task bundle && deno run -A --unstable-http --env --config=deno.json $(deno eval 'console.log(import.meta.resolve(\"deco/hypervisor/main.ts\"))') --build-cmd 'deno task build' -- deno task dev",
"start": "deno task bundle && deno run -A --unstable-http --env --config=deno.json https://deco.cx/run --build-cmd 'deno task build' -- deno task dev",
"gen": "deno run -A dev.ts --gen-only",
"play": "USE_LOCAL_STORAGE_ONLY=true deno task start",
"component": "deno eval 'import \"deco/scripts/component.ts\"'",
"release": "deno eval 'import \"deco/scripts/release.ts\"'",
"update": "deno run -Ar https://deco.cx/update",
"check": "deno fmt && deno lint && deno check dev.ts main.ts",
"install": "deno eval 'import \"deco/scripts/apps/install.ts\"'",
"uninstall": "deno eval 'import \"deco/scripts/apps/uninstall.ts\"'",
"bundle": "deno eval 'import \"deco/scripts/apps/bundle.ts\"' site",
"update": "deno run -Ar jsr:@deco/scripts/update",
"bundle": "deno run -A jsr:@deco/deco/scripts/bundle site",
"cache_clean": "rm deno.lock; deno cache -r main.ts",
"decodev": "deno run -A jsr:@deco/deco/scripts/dev",
"decoprod": "deno run -A jsr:@deco/deco/scripts/dev $ && deno add jsr:@deco/deco",
"build": "deno run -A dev.ts build",
"preview": "deno run -A main.ts",
"generate-icons": "deno run -A --unstable static/generate-icons.ts",
Expand Down
10 changes: 1 addition & 9 deletions dev.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
import { setupGithooks } from "https://deno.land/x/[email protected]/githooks.ts";

import dev from "$fresh/dev.ts";
import config from "./fresh.config.ts";

setupGithooks().catch(console.error);

// Generate manifest and boot server
await dev(import.meta.url, "./main.ts", config);
import "./hono.ts";

if (Deno.args.includes("build")) {
Deno.exit(0);
Expand Down
12 changes: 0 additions & 12 deletions fresh.config.ts

This file was deleted.

17 changes: 0 additions & 17 deletions fresh.gen.ts

This file was deleted.

20 changes: 20 additions & 0 deletions hono.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Deco } from "@deco/deco";

import { Head } from "$fresh/runtime.ts";
import { bindings as HTMX } from "@deco/deco/htmx";
import { type Manifest } from "./manifest.gen.ts";
// compatibility code with Fresh
import type { ComponentType } from "preact";
import { Layout } from "./_app.tsx";

(Head as ComponentType).displayName = "HTMLHead";
// end compatibility code with fresh

const deco = await Deco.init({
bindings: HTMX<Manifest>({
Layout,
}),
});

const envPort = Deno.env.get("PORT");
Deno.serve({ handler: deco.fetch.bind(deco), port: envPort ? +envPort : 8000 });
Loading